From 97e079fde0dd6cb3f589e1d80254c432642927dd Mon Sep 17 00:00:00 2001 From: itaru2622 <70509350+itaru2622@users.noreply.github.com> Date: Tue, 26 Oct 2021 17:12:42 +0900 Subject: [PATCH 01/25] add no_proxy support to python client (#10648) * add no_proxy support to python client * add unittest for no_proxy supporting, python client * update samples for no_proxy supporting, python client * fix input parameter in samples/openapi3/.../tests_manual/test_extra_pool_config_options.py * re-implement no_proxy support to python client according to PR conversation #10648 * re-update samples for no_proxy supporting, python client --- .../resources/python/configuration.mustache | 3 + .../src/main/resources/python/rest.mustache | 58 ++++++++++++++++++- .../codegen/python/PythonClientTest.java | 23 ++++++++ .../python/petstore_api/configuration.py | 3 + .../petstore/python/petstore_api/rest.py | 58 ++++++++++++++++++- .../petstore_api/configuration.py | 3 + .../petstore_api/rest.py | 58 ++++++++++++++++++- .../python/x_auth_id_alias/configuration.py | 3 + .../python/x_auth_id_alias/rest.py | 58 ++++++++++++++++++- .../python/dynamic_servers/configuration.py | 3 + .../python/dynamic_servers/rest.py | 58 ++++++++++++++++++- .../python/petstore_api/configuration.py | 3 + .../petstore/python/petstore_api/rest.py | 58 ++++++++++++++++++- .../test_extra_pool_config_options.py | 4 +- 14 files changed, 379 insertions(+), 14 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/configuration.mustache b/modules/openapi-generator/src/main/resources/python/configuration.mustache index ac15aa430ea..8e586cf68ce 100644 --- a/modules/openapi-generator/src/main/resources/python/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/python/configuration.mustache @@ -278,6 +278,9 @@ conf = {{{packageName}}}.Configuration( self.proxy = None """Proxy URL """ + self.no_proxy = None + """bypass proxy for host in the no_proxy list. + """ self.proxy_headers = None """Proxy headers """ diff --git a/modules/openapi-generator/src/main/resources/python/rest.mustache b/modules/openapi-generator/src/main/resources/python/rest.mustache index 21c8d5b44c0..d4293e70da2 100644 --- a/modules/openapi-generator/src/main/resources/python/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/rest.mustache @@ -6,8 +6,10 @@ import logging import re import ssl from urllib.parse import urlencode - +from urllib.parse import urlparse +from urllib.request import proxy_bypass_environment import urllib3 +import ipaddress from {{packageName}}.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError @@ -64,7 +66,7 @@ class RESTClientObject(object): maxsize = 4 # https pool manager - if configuration.proxy: + if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): self.pool_manager = urllib3.ProxyManager( num_pools=pools_size, maxsize=maxsize, @@ -282,3 +284,55 @@ class RESTClientObject(object): _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) + +# end of class RESTClientObject +def is_ipv4(target): + """ Test if IPv4 address or not + """ + try: + chk = ipaddress.IPv4Address(target) + return True + except ipaddress.AddressValueError: + return False + +def in_ipv4net(target, net): + """ Test if target belongs to given IPv4 network + """ + try: + nw = ipaddress.IPv4Network(net) + ip = ipaddress.IPv4Address(target) + if ip in nw: + return True + return False + except ipaddress.AddressValueError: + return False + except ipaddress.NetmaskValueError: + return False + +def should_bypass_proxies(url, no_proxy=None): + """ Yet another requests.should_bypass_proxies + Test if proxies should not be used for a particular url. + """ + + parsed = urlparse(url) + + # special cases + if parsed.hostname in [None, '']: + return True + + # special cases + if no_proxy in [None , '']: + return False + if no_proxy == '*': + return True + + no_proxy = no_proxy.lower().replace(' ',''); + entries = ( + host for host in no_proxy.split(',') if host + ) + + if is_ipv4(parsed.hostname): + for item in entries: + if in_ipv4net(parsed.hostname, item): + return True + return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} ) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java index 2ba80266215..bb470c5c315 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java @@ -29,6 +29,7 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import java.io.File; import java.math.BigDecimal; import java.nio.file.Files; +import java.nio.file.Path; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -464,4 +465,26 @@ public class PythonClientTest { } + @Test(description = "tests NoProxyPyClient") + public void testNoProxyPyClient() throws Exception { + + final String gen = "python"; + final String spec = "src/test/resources/3_0/petstore.yaml"; + + File output = Files.createTempDirectory("test").toFile(); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName(gen) + .setInputSpec(spec) + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(clientOptInput).generate(); + + for (String f : new String[] { "openapi_client/configuration.py", "openapi_client/rest.py" } ) { + TestUtils.ensureContainsFile(files, output, f); + Path p = output.toPath().resolve(f); + TestUtils.assertFileContains(p, "no_proxy"); + } + } + } diff --git a/samples/client/petstore/python/petstore_api/configuration.py b/samples/client/petstore/python/petstore_api/configuration.py index 8fc4edbf89a..e6e4596df11 100644 --- a/samples/client/petstore/python/petstore_api/configuration.py +++ b/samples/client/petstore/python/petstore_api/configuration.py @@ -215,6 +215,9 @@ conf = petstore_api.Configuration( self.proxy = None """Proxy URL """ + self.no_proxy = None + """bypass proxy for host in the no_proxy list. + """ self.proxy_headers = None """Proxy headers """ diff --git a/samples/client/petstore/python/petstore_api/rest.py b/samples/client/petstore/python/petstore_api/rest.py index a38fcec1c84..476138a6bc8 100644 --- a/samples/client/petstore/python/petstore_api/rest.py +++ b/samples/client/petstore/python/petstore_api/rest.py @@ -14,8 +14,10 @@ import logging import re import ssl from urllib.parse import urlencode - +from urllib.parse import urlparse +from urllib.request import proxy_bypass_environment import urllib3 +import ipaddress from petstore_api.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError @@ -72,7 +74,7 @@ class RESTClientObject(object): maxsize = 4 # https pool manager - if configuration.proxy: + if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): self.pool_manager = urllib3.ProxyManager( num_pools=pools_size, maxsize=maxsize, @@ -290,3 +292,55 @@ class RESTClientObject(object): _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) + +# end of class RESTClientObject +def is_ipv4(target): + """ Test if IPv4 address or not + """ + try: + chk = ipaddress.IPv4Address(target) + return True + except ipaddress.AddressValueError: + return False + +def in_ipv4net(target, net): + """ Test if target belongs to given IPv4 network + """ + try: + nw = ipaddress.IPv4Network(net) + ip = ipaddress.IPv4Address(target) + if ip in nw: + return True + return False + except ipaddress.AddressValueError: + return False + except ipaddress.NetmaskValueError: + return False + +def should_bypass_proxies(url, no_proxy=None): + """ Yet another requests.should_bypass_proxies + Test if proxies should not be used for a particular url. + """ + + parsed = urlparse(url) + + # special cases + if parsed.hostname in [None, '']: + return True + + # special cases + if no_proxy in [None , '']: + return False + if no_proxy == '*': + return True + + no_proxy = no_proxy.lower().replace(' ',''); + entries = ( + host for host in no_proxy.split(',') if host + ) + + if is_ipv4(parsed.hostname): + for item in entries: + if in_ipv4net(parsed.hostname, item): + return True + return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} ) diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/configuration.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/configuration.py index 8fc4edbf89a..e6e4596df11 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/configuration.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/configuration.py @@ -215,6 +215,9 @@ conf = petstore_api.Configuration( self.proxy = None """Proxy URL """ + self.no_proxy = None + """bypass proxy for host in the no_proxy list. + """ self.proxy_headers = None """Proxy headers """ diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py index a38fcec1c84..476138a6bc8 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py @@ -14,8 +14,10 @@ import logging import re import ssl from urllib.parse import urlencode - +from urllib.parse import urlparse +from urllib.request import proxy_bypass_environment import urllib3 +import ipaddress from petstore_api.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError @@ -72,7 +74,7 @@ class RESTClientObject(object): maxsize = 4 # https pool manager - if configuration.proxy: + if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): self.pool_manager = urllib3.ProxyManager( num_pools=pools_size, maxsize=maxsize, @@ -290,3 +292,55 @@ class RESTClientObject(object): _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) + +# end of class RESTClientObject +def is_ipv4(target): + """ Test if IPv4 address or not + """ + try: + chk = ipaddress.IPv4Address(target) + return True + except ipaddress.AddressValueError: + return False + +def in_ipv4net(target, net): + """ Test if target belongs to given IPv4 network + """ + try: + nw = ipaddress.IPv4Network(net) + ip = ipaddress.IPv4Address(target) + if ip in nw: + return True + return False + except ipaddress.AddressValueError: + return False + except ipaddress.NetmaskValueError: + return False + +def should_bypass_proxies(url, no_proxy=None): + """ Yet another requests.should_bypass_proxies + Test if proxies should not be used for a particular url. + """ + + parsed = urlparse(url) + + # special cases + if parsed.hostname in [None, '']: + return True + + # special cases + if no_proxy in [None , '']: + return False + if no_proxy == '*': + return True + + no_proxy = no_proxy.lower().replace(' ',''); + entries = ( + host for host in no_proxy.split(',') if host + ) + + if is_ipv4(parsed.hostname): + for item in entries: + if in_ipv4net(parsed.hostname, item): + return True + return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} ) diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/configuration.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/configuration.py index e5e2f7d53e3..d3b86dbde09 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/configuration.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/configuration.py @@ -199,6 +199,9 @@ conf = x_auth_id_alias.Configuration( self.proxy = None """Proxy URL """ + self.no_proxy = None + """bypass proxy for host in the no_proxy list. + """ self.proxy_headers = None """Proxy headers """ diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py index a7c5fd3304a..c3566a6d0b2 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py @@ -14,8 +14,10 @@ import logging import re import ssl from urllib.parse import urlencode - +from urllib.parse import urlparse +from urllib.request import proxy_bypass_environment import urllib3 +import ipaddress from x_auth_id_alias.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError @@ -72,7 +74,7 @@ class RESTClientObject(object): maxsize = 4 # https pool manager - if configuration.proxy: + if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): self.pool_manager = urllib3.ProxyManager( num_pools=pools_size, maxsize=maxsize, @@ -290,3 +292,55 @@ class RESTClientObject(object): _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) + +# end of class RESTClientObject +def is_ipv4(target): + """ Test if IPv4 address or not + """ + try: + chk = ipaddress.IPv4Address(target) + return True + except ipaddress.AddressValueError: + return False + +def in_ipv4net(target, net): + """ Test if target belongs to given IPv4 network + """ + try: + nw = ipaddress.IPv4Network(net) + ip = ipaddress.IPv4Address(target) + if ip in nw: + return True + return False + except ipaddress.AddressValueError: + return False + except ipaddress.NetmaskValueError: + return False + +def should_bypass_proxies(url, no_proxy=None): + """ Yet another requests.should_bypass_proxies + Test if proxies should not be used for a particular url. + """ + + parsed = urlparse(url) + + # special cases + if parsed.hostname in [None, '']: + return True + + # special cases + if no_proxy in [None , '']: + return False + if no_proxy == '*': + return True + + no_proxy = no_proxy.lower().replace(' ',''); + entries = ( + host for host in no_proxy.split(',') if host + ) + + if is_ipv4(parsed.hostname): + for item in entries: + if in_ipv4net(parsed.hostname, item): + return True + return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} ) diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/configuration.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/configuration.py index e90b08da266..afda4f4fd36 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/configuration.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/configuration.py @@ -179,6 +179,9 @@ class Configuration(object): self.proxy = None """Proxy URL """ + self.no_proxy = None + """bypass proxy for host in the no_proxy list. + """ self.proxy_headers = None """Proxy headers """ diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py index 191d850b87d..b73beb6fd00 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py @@ -14,8 +14,10 @@ import logging import re import ssl from urllib.parse import urlencode - +from urllib.parse import urlparse +from urllib.request import proxy_bypass_environment import urllib3 +import ipaddress from dynamic_servers.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError @@ -72,7 +74,7 @@ class RESTClientObject(object): maxsize = 4 # https pool manager - if configuration.proxy: + if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): self.pool_manager = urllib3.ProxyManager( num_pools=pools_size, maxsize=maxsize, @@ -290,3 +292,55 @@ class RESTClientObject(object): _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) + +# end of class RESTClientObject +def is_ipv4(target): + """ Test if IPv4 address or not + """ + try: + chk = ipaddress.IPv4Address(target) + return True + except ipaddress.AddressValueError: + return False + +def in_ipv4net(target, net): + """ Test if target belongs to given IPv4 network + """ + try: + nw = ipaddress.IPv4Network(net) + ip = ipaddress.IPv4Address(target) + if ip in nw: + return True + return False + except ipaddress.AddressValueError: + return False + except ipaddress.NetmaskValueError: + return False + +def should_bypass_proxies(url, no_proxy=None): + """ Yet another requests.should_bypass_proxies + Test if proxies should not be used for a particular url. + """ + + parsed = urlparse(url) + + # special cases + if parsed.hostname in [None, '']: + return True + + # special cases + if no_proxy in [None , '']: + return False + if no_proxy == '*': + return True + + no_proxy = no_proxy.lower().replace(' ',''); + entries = ( + host for host in no_proxy.split(',') if host + ) + + if is_ipv4(parsed.hostname): + for item in entries: + if in_ipv4net(parsed.hostname, item): + return True + return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} ) diff --git a/samples/openapi3/client/petstore/python/petstore_api/configuration.py b/samples/openapi3/client/petstore/python/petstore_api/configuration.py index 9042d98826a..44b3f666ac2 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/configuration.py +++ b/samples/openapi3/client/petstore/python/petstore_api/configuration.py @@ -262,6 +262,9 @@ conf = petstore_api.Configuration( self.proxy = None """Proxy URL """ + self.no_proxy = None + """bypass proxy for host in the no_proxy list. + """ self.proxy_headers = None """Proxy headers """ diff --git a/samples/openapi3/client/petstore/python/petstore_api/rest.py b/samples/openapi3/client/petstore/python/petstore_api/rest.py index a38fcec1c84..476138a6bc8 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/rest.py +++ b/samples/openapi3/client/petstore/python/petstore_api/rest.py @@ -14,8 +14,10 @@ import logging import re import ssl from urllib.parse import urlencode - +from urllib.parse import urlparse +from urllib.request import proxy_bypass_environment import urllib3 +import ipaddress from petstore_api.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError @@ -72,7 +74,7 @@ class RESTClientObject(object): maxsize = 4 # https pool manager - if configuration.proxy: + if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): self.pool_manager = urllib3.ProxyManager( num_pools=pools_size, maxsize=maxsize, @@ -290,3 +292,55 @@ class RESTClientObject(object): _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) + +# end of class RESTClientObject +def is_ipv4(target): + """ Test if IPv4 address or not + """ + try: + chk = ipaddress.IPv4Address(target) + return True + except ipaddress.AddressValueError: + return False + +def in_ipv4net(target, net): + """ Test if target belongs to given IPv4 network + """ + try: + nw = ipaddress.IPv4Network(net) + ip = ipaddress.IPv4Address(target) + if ip in nw: + return True + return False + except ipaddress.AddressValueError: + return False + except ipaddress.NetmaskValueError: + return False + +def should_bypass_proxies(url, no_proxy=None): + """ Yet another requests.should_bypass_proxies + Test if proxies should not be used for a particular url. + """ + + parsed = urlparse(url) + + # special cases + if parsed.hostname in [None, '']: + return True + + # special cases + if no_proxy in [None , '']: + return False + if no_proxy == '*': + return True + + no_proxy = no_proxy.lower().replace(' ',''); + entries = ( + host for host in no_proxy.split(',') if host + ) + + if is_ipv4(parsed.hostname): + for item in entries: + if in_ipv4net(parsed.hostname, item): + return True + return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} ) diff --git a/samples/openapi3/client/petstore/python/tests_manual/test_extra_pool_config_options.py b/samples/openapi3/client/petstore/python/tests_manual/test_extra_pool_config_options.py index 5bf6b989ebe..9e49b9e71ba 100644 --- a/samples/openapi3/client/petstore/python/tests_manual/test_extra_pool_config_options.py +++ b/samples/openapi3/client/petstore/python/tests_manual/test_extra_pool_config_options.py @@ -48,9 +48,9 @@ class TestExtraOptionsForPools(unittest.TestCase): socket_options = ["extra", "socket", "options"] - config = petstore_api.Configuration(host="HOST") + config = petstore_api.Configuration(host="http://somehost.local:8080") config.socket_options = socket_options - config.proxy = True + config.proxy = "http://proxy.local:8080/" with patch("petstore_api.rest.urllib3.ProxyManager", StubProxyManager): api_client = petstore_api.ApiClient(config) From d1089d785c1982c7a50e0c95e9b723a44e1e1d2d Mon Sep 17 00:00:00 2001 From: rudolficzek Date: Tue, 26 Oct 2021 12:49:18 +0100 Subject: [PATCH 02/25] fix import mappings for service in angular typescript (#10644) * fix import mappings for service in angular typescript * add unit test * regenerated samples --- .../languages/TypeScriptAngularClientCodegen.java | 3 ++- .../resources/typescript-angular/api.service.mustache | 2 +- .../TypeScriptAngularClientCodegenTest.java | 11 ++++++++++- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../builds/default/api/default.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../single-request-parameter/api/pet.service.ts | 4 ++-- .../single-request-parameter/api/store.service.ts | 2 +- .../single-request-parameter/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- .../with-prefixed-module-name/api/pet.service.ts | 4 ++-- .../with-prefixed-module-name/api/store.service.ts | 2 +- .../with-prefixed-module-name/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/store.service.ts | 2 +- .../builds/default/api/user.service.ts | 2 +- .../builds/with-npm/api/pet.service.ts | 4 ++-- .../builds/with-npm/api/store.service.ts | 2 +- .../builds/with-npm/api/user.service.ts | 2 +- 64 files changed, 94 insertions(+), 84 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index a00b28395f6..f2c8033a233 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -44,6 +44,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode public static enum PROVIDED_IN_LEVEL {none, root, any, platform} private static final String DEFAULT_IMPORT_PREFIX = "./"; + private static final String DEFAULT_MODEL_IMPORT_DIRECTORY_PREFIX = "../"; public static final String NPM_REPOSITORY = "npmRepository"; public static final String WITH_INTERFACES = "withInterfaces"; @@ -634,7 +635,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode if (importMapping.containsKey(name)) { return importMapping.get(name); } - return modelPackage() + "/" + toModelFilename(name).substring(DEFAULT_IMPORT_PREFIX.length()); + return DEFAULT_MODEL_IMPORT_DIRECTORY_PREFIX + modelPackage() + "/" + toModelFilename(name).substring(DEFAULT_IMPORT_PREFIX.length()); } public String getNpmRepository() { diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache index 02c52d23355..cc7f28eee00 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache @@ -9,7 +9,7 @@ import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; {{#imports}} -import { {{classname}} } from '../model/models'; +import { {{ classname }} } from '{{ filename }}'; {{/imports}} import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java index 07e2216710b..e5a76bd02a3 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java @@ -228,7 +228,7 @@ public class TypeScriptAngularClientCodegenTest { OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("test", schema); codegen.setOpenAPI(openAPI); - Assert.assertEquals(codegen.toModelImport(modelName), "model/foo-response-links"); + Assert.assertEquals(codegen.toModelImport(modelName), "../model/foo-response-links"); Assert.assertEquals(codegen.toModelFilename(modelName), "./foo-response-links"); } @@ -258,4 +258,13 @@ public class TypeScriptAngularClientCodegenTest { Assert.assertEquals(codegen.toParamName("valid_id"), "ValidId"); Assert.assertEquals(codegen.toParamName("illegal-id+"), "IllegalId"); } + + @Test + public void testCorrectlyProducesImportsWithImportMapping() { + TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen(); + final String importedModel = "SharedApiModel"; + final String importName = "@lib/custom/model"; + codegen.importMapping().put(importedModel, importName); + Assert.assertEquals(codegen.toModelImport(importedModel), importName); + } } diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts index ac873acd096..c21facfef1f 100644 --- a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Fruit } from '../model/models'; +import { Fruit } from '../model/fruit'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts index d8009ed719c..a3bb80fd1c3 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts index 2f3ced393cc..ba1af51f2af 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts index a1daecfe0d5..8f5fdccbb24 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts index d8009ed719c..a3bb80fd1c3 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts index 2f3ced393cc..ba1af51f2af 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts index a1daecfe0d5..8f5fdccbb24 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts index 6307beedbe6..3f19c7121aa 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts index df5eb10d6dd..c1e177bce56 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts index 22cdfe1be90..3f13dc90e17 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts index 6307beedbe6..3f19c7121aa 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts index df5eb10d6dd..c1e177bce56 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts index 22cdfe1be90..3f13dc90e17 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts index 6307beedbe6..3f19c7121aa 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts index df5eb10d6dd..c1e177bce56 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts index 22cdfe1be90..3f13dc90e17 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts index 6307beedbe6..3f19c7121aa 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts index df5eb10d6dd..c1e177bce56 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts index 22cdfe1be90..3f13dc90e17 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts index e0b1b6f5c7e..4c18dd863be 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts index 1bfb6c2e277..37fc3bd68bc 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts index 971e87a39ae..304be84784b 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts index 2d8ef08dd39..209bc5dd588 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { PetStoreConfiguration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts index ac3e175914e..bd2dd3768e6 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { PetStoreConfiguration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts index 8c07bd3cf32..aebbfb3c47b 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { PetStoreConfiguration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts index 014e9610fd7..60cd6a36f29 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts index ff7748156a8..115d9339268 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts index 21931307519..09835bf872e 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts index 800853664a0..23bbf686609 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,8 +18,8 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { ApiResponse } from '../model/models'; -import { Pet } from '../model/models'; +import { ApiResponse } from '../model/apiResponse'; +import { Pet } from '../model/pet'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts index 1397ffd2d02..43135a4b747 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { Order } from '../model/models'; +import { Order } from '../model/order'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts index 9809f730029..4326037967a 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,7 +18,7 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; -import { User } from '../model/models'; +import { User } from '../model/user'; import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; From 01a4569995659908f53281cb10895618a7b6110b Mon Sep 17 00:00:00 2001 From: cyangle Date: Tue, 26 Oct 2021 11:21:19 -0500 Subject: [PATCH 03/25] Remove .rspec and .rubycop.yml from crystal client (#10701) --- .../src/main/resources/crystal/rspec.mustache | 2 - .../main/resources/crystal/rubocop.mustache | 148 ------------------ samples/client/petstore/crystal/.rspec | 2 - samples/client/petstore/crystal/.rubocop.yml | 148 ------------------ 4 files changed, 300 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/crystal/rspec.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/rubocop.mustache delete mode 100644 samples/client/petstore/crystal/.rspec delete mode 100644 samples/client/petstore/crystal/.rubocop.yml diff --git a/modules/openapi-generator/src/main/resources/crystal/rspec.mustache b/modules/openapi-generator/src/main/resources/crystal/rspec.mustache deleted file mode 100644 index 83e16f80447..00000000000 --- a/modules/openapi-generator/src/main/resources/crystal/rspec.mustache +++ /dev/null @@ -1,2 +0,0 @@ ---color ---require spec_helper diff --git a/modules/openapi-generator/src/main/resources/crystal/rubocop.mustache b/modules/openapi-generator/src/main/resources/crystal/rubocop.mustache deleted file mode 100644 index d32b2b1cdab..00000000000 --- a/modules/openapi-generator/src/main/resources/crystal/rubocop.mustache +++ /dev/null @@ -1,148 +0,0 @@ -# This file is based on https://github.com/rails/rails/blob/master/.rubocop.yml (MIT license) -# Automatically generated by OpenAPI Generator (https://openapi-generator.tech) -AllCops: - TargetRubyVersion: 2.4 - # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop - # to ignore them, so only the ones explicitly set in this file are enabled. - DisabledByDefault: true - Exclude: - - '**/templates/**/*' - - '**/vendor/**/*' - - 'actionpack/lib/action_dispatch/journey/parser.rb' - -# Prefer &&/|| over and/or. -Style/AndOr: - Enabled: true - -# Align `when` with `case`. -Layout/CaseIndentation: - Enabled: true - -# Align comments with method definitions. -Layout/CommentIndentation: - Enabled: true - -Layout/ElseAlignment: - Enabled: true - -Layout/EmptyLineAfterMagicComment: - Enabled: true - -# In a regular class definition, no empty lines around the body. -Layout/EmptyLinesAroundClassBody: - Enabled: true - -# In a regular method definition, no empty lines around the body. -Layout/EmptyLinesAroundMethodBody: - Enabled: true - -# In a regular module definition, no empty lines around the body. -Layout/EmptyLinesAroundModuleBody: - Enabled: true - -Layout/FirstArgumentIndentation: - Enabled: true - -# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }. -Style/HashSyntax: - Enabled: false - -# Method definitions after `private` or `protected` isolated calls need one -# extra level of indentation. -Layout/IndentationConsistency: - Enabled: true - EnforcedStyle: indented_internal_methods - -# Two spaces, no tabs (for indentation). -Layout/IndentationWidth: - Enabled: true - -Layout/LeadingCommentSpace: - Enabled: true - -Layout/SpaceAfterColon: - Enabled: true - -Layout/SpaceAfterComma: - Enabled: true - -Layout/SpaceAroundEqualsInParameterDefault: - Enabled: true - -Layout/SpaceAroundKeyword: - Enabled: true - -Layout/SpaceAroundOperators: - Enabled: true - -Layout/SpaceBeforeComma: - Enabled: true - -Layout/SpaceBeforeFirstArg: - Enabled: true - -Style/DefWithParentheses: - Enabled: true - -# Defining a method with parameters needs parentheses. -Style/MethodDefParentheses: - Enabled: true - -Style/FrozenStringLiteralComment: - Enabled: false - EnforcedStyle: always - -# Use `foo {}` not `foo{}`. -Layout/SpaceBeforeBlockBraces: - Enabled: true - -# Use `foo { bar }` not `foo {bar}`. -Layout/SpaceInsideBlockBraces: - Enabled: true - -# Use `{ a: 1 }` not `{a:1}`. -Layout/SpaceInsideHashLiteralBraces: - Enabled: true - -Layout/SpaceInsideParens: - Enabled: true - -# Check quotes usage according to lint rule below. -#Style/StringLiterals: -# Enabled: true -# EnforcedStyle: single_quotes - -# Detect hard tabs, no hard tabs. -Layout/IndentationStyle: - Enabled: true - -# Blank lines should not have any spaces. -Layout/TrailingEmptyLines: - Enabled: true - -# No trailing whitespace. -Layout/TrailingWhitespace: - Enabled: false - -# Use quotes for string literals when they are enough. -Style/RedundantPercentQ: - Enabled: true - -# Align `end` with the matching keyword or starting expression except for -# assignments, where it should be aligned with the LHS. -Layout/EndAlignment: - Enabled: true - EnforcedStyleAlignWith: variable - AutoCorrect: true - -# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg. -Lint/RequireParentheses: - Enabled: true - -Style/RedundantReturn: - Enabled: true - AllowMultipleReturnValues: true - -Style/Semicolon: - Enabled: true - AllowAsExpressionSeparator: true diff --git a/samples/client/petstore/crystal/.rspec b/samples/client/petstore/crystal/.rspec deleted file mode 100644 index 83e16f80447..00000000000 --- a/samples/client/petstore/crystal/.rspec +++ /dev/null @@ -1,2 +0,0 @@ ---color ---require spec_helper diff --git a/samples/client/petstore/crystal/.rubocop.yml b/samples/client/petstore/crystal/.rubocop.yml deleted file mode 100644 index d32b2b1cdab..00000000000 --- a/samples/client/petstore/crystal/.rubocop.yml +++ /dev/null @@ -1,148 +0,0 @@ -# This file is based on https://github.com/rails/rails/blob/master/.rubocop.yml (MIT license) -# Automatically generated by OpenAPI Generator (https://openapi-generator.tech) -AllCops: - TargetRubyVersion: 2.4 - # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop - # to ignore them, so only the ones explicitly set in this file are enabled. - DisabledByDefault: true - Exclude: - - '**/templates/**/*' - - '**/vendor/**/*' - - 'actionpack/lib/action_dispatch/journey/parser.rb' - -# Prefer &&/|| over and/or. -Style/AndOr: - Enabled: true - -# Align `when` with `case`. -Layout/CaseIndentation: - Enabled: true - -# Align comments with method definitions. -Layout/CommentIndentation: - Enabled: true - -Layout/ElseAlignment: - Enabled: true - -Layout/EmptyLineAfterMagicComment: - Enabled: true - -# In a regular class definition, no empty lines around the body. -Layout/EmptyLinesAroundClassBody: - Enabled: true - -# In a regular method definition, no empty lines around the body. -Layout/EmptyLinesAroundMethodBody: - Enabled: true - -# In a regular module definition, no empty lines around the body. -Layout/EmptyLinesAroundModuleBody: - Enabled: true - -Layout/FirstArgumentIndentation: - Enabled: true - -# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }. -Style/HashSyntax: - Enabled: false - -# Method definitions after `private` or `protected` isolated calls need one -# extra level of indentation. -Layout/IndentationConsistency: - Enabled: true - EnforcedStyle: indented_internal_methods - -# Two spaces, no tabs (for indentation). -Layout/IndentationWidth: - Enabled: true - -Layout/LeadingCommentSpace: - Enabled: true - -Layout/SpaceAfterColon: - Enabled: true - -Layout/SpaceAfterComma: - Enabled: true - -Layout/SpaceAroundEqualsInParameterDefault: - Enabled: true - -Layout/SpaceAroundKeyword: - Enabled: true - -Layout/SpaceAroundOperators: - Enabled: true - -Layout/SpaceBeforeComma: - Enabled: true - -Layout/SpaceBeforeFirstArg: - Enabled: true - -Style/DefWithParentheses: - Enabled: true - -# Defining a method with parameters needs parentheses. -Style/MethodDefParentheses: - Enabled: true - -Style/FrozenStringLiteralComment: - Enabled: false - EnforcedStyle: always - -# Use `foo {}` not `foo{}`. -Layout/SpaceBeforeBlockBraces: - Enabled: true - -# Use `foo { bar }` not `foo {bar}`. -Layout/SpaceInsideBlockBraces: - Enabled: true - -# Use `{ a: 1 }` not `{a:1}`. -Layout/SpaceInsideHashLiteralBraces: - Enabled: true - -Layout/SpaceInsideParens: - Enabled: true - -# Check quotes usage according to lint rule below. -#Style/StringLiterals: -# Enabled: true -# EnforcedStyle: single_quotes - -# Detect hard tabs, no hard tabs. -Layout/IndentationStyle: - Enabled: true - -# Blank lines should not have any spaces. -Layout/TrailingEmptyLines: - Enabled: true - -# No trailing whitespace. -Layout/TrailingWhitespace: - Enabled: false - -# Use quotes for string literals when they are enough. -Style/RedundantPercentQ: - Enabled: true - -# Align `end` with the matching keyword or starting expression except for -# assignments, where it should be aligned with the LHS. -Layout/EndAlignment: - Enabled: true - EnforcedStyleAlignWith: variable - AutoCorrect: true - -# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg. -Lint/RequireParentheses: - Enabled: true - -Style/RedundantReturn: - Enabled: true - AllowMultipleReturnValues: true - -Style/Semicolon: - Enabled: true - AllowAsExpressionSeparator: true From f1ab3edbc0660e46237ba8f5d2ffccc6278e7cd0 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 26 Oct 2021 18:33:58 +0200 Subject: [PATCH 04/25] [dart] Fix pub server URL (#10695) * replace private pub server with official pub server URL --- .../serialization/built_value/class.mustache | 2 +- .../pubspec.lock | 116 ++++++++--------- .../pubspec.lock | 118 +++++++++--------- .../petstore/dart2/petstore/pubspec.lock | 116 ++++++++--------- 4 files changed, 176 insertions(+), 176 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache index 11bc668b902..b144bd50495 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache @@ -106,7 +106,7 @@ class _${{classname}}Serializer implements StructuredSerializer<{{classname}}> { {{/isContainer}} {{#isModel}} {{#isPrimitiveType}} - {{! These are models that have nee manually marked as primitve via generator param. }} + {{! These are models that have nee manually marked as primitive via generator param. }} result.{{{name}}} = valueDes; {{/isPrimitiveType}} {{^isPrimitiveType}} diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.lock b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.lock index d551818e23c..fa4f795327d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.lock +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.lock @@ -5,224 +5,224 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "21.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.5.0" args: dependency: transitive description: name: args - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" async: dependency: transitive description: name: async - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.7.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" build: dependency: transitive description: name: build - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" built_collection: dependency: "direct dev" description: name: built_collection - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: "direct dev" description: name: built_value - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "8.1.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" collection: dependency: transitive description: name: collection - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.15.0" convert: dependency: transitive description: name: convert - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.0" coverage: dependency: transitive description: name: coverage - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.2" crypto: dependency: transitive description: name: crypto - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" dio: dependency: "direct dev" description: name: dio - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" file: dependency: transitive description: name: file - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "6.1.1" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" frontend_server_client: dependency: transitive description: name: frontend_server_client - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" glob: dependency: transitive description: name: glob - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" http_mock_adapter: dependency: "direct dev" description: name: http_mock_adapter - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.2" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" io: dependency: transitive description: name: io - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" js: dependency: transitive description: name: js - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" logging: dependency: transitive description: name: logging - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.12.10" meta: dependency: transitive description: name: meta - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" mime: dependency: transitive description: name: mime - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "5.0.11" node_preamble: dependency: transitive description: name: node_preamble - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" openapi: @@ -236,182 +236,182 @@ packages: dependency: transitive description: name: package_config - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" path: dependency: transitive description: name: path - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.11.0" pool: dependency: transitive description: name: pool - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.5.0" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shelf: dependency: transitive description: name: shelf - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.4" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.0" shelf_static: dependency: transitive description: name: shelf_static - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" source_gen: dependency: transitive description: name: source_gen - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" source_maps: dependency: transitive description: name: source_maps - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.10.10" source_span: dependency: transitive description: name: source_span - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test: dependency: "direct dev" description: name: test - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.17.4" test_api: dependency: transitive description: name: test_api - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.4.0" test_core: dependency: transitive description: name: test_core - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.24" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "6.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.lock b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.lock index 4355ed26f68..f23a0ab8a16 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.lock +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.lock @@ -5,231 +5,231 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "12.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.40.6" args: dependency: transitive description: name: args - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.6.0" async: dependency: transitive description: name: async - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" built_collection: dependency: "direct dev" description: name: built_collection - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.3.2" built_value: dependency: "direct dev" description: name: built_value - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "7.1.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" clock: dependency: transitive description: name: clock - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" collection: dependency: transitive description: name: collection - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.15.0" convert: dependency: transitive description: name: convert - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" coverage: dependency: transitive description: name: coverage - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.14.2" crypto: dependency: transitive description: name: crypto - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.5" dio: dependency: "direct dev" description: name: dio - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.10" file: dependency: transitive description: name: file - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "5.2.1" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.10.11" glob: dependency: transitive description: name: glob - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" http: dependency: transitive description: name: http - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.12.2" http_mock_adapter: dependency: "direct dev" description: name: http_mock_adapter - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.1.6" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.1.4" intl: dependency: transitive description: name: intl - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" io: dependency: transitive description: name: io - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.5" js: dependency: transitive description: name: js - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" logging: dependency: transitive description: name: logging - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.11.4" matcher: dependency: transitive description: name: matcher - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.12.9" meta: dependency: transitive description: name: meta - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" mime: dependency: transitive description: name: mime - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" mockito: dependency: "direct overridden" description: name: mockito - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.1.1" node_interop: dependency: transitive description: name: node_interop - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.1" node_io: dependency: transitive description: name: node_io - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" node_preamble: dependency: transitive description: name: node_preamble - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.4.13" openapi: @@ -243,182 +243,182 @@ packages: dependency: transitive description: name: package_config - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.9.3" path: dependency: transitive description: name: path - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.11.0" pool: dependency: transitive description: name: pool - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.5.0" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.4.4" quiver: dependency: transitive description: name: quiver - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.5" shelf: dependency: transitive description: name: shelf - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.7.9" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" shelf_static: dependency: transitive description: name: shelf_static - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.2.9+2" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.2.4+1" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" source_maps: dependency: transitive description: name: source_maps - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.10.10" source_span: dependency: transitive description: name: source_span - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test: dependency: "direct dev" description: name: test - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.15.5" test_api: dependency: transitive description: name: test_api - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.2.18+1" test_core: dependency: transitive description: name: test_core - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.11+2" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.9.7+15" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.7.5" yaml: dependency: transitive description: name: yaml - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.2.1" sdks: diff --git a/samples/openapi3/client/petstore/dart2/petstore/pubspec.lock b/samples/openapi3/client/petstore/dart2/petstore/pubspec.lock index 9b351ff283a..dd5bbc89254 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/pubspec.lock +++ b/samples/openapi3/client/petstore/dart2/petstore/pubspec.lock @@ -5,224 +5,224 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "14.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.41.2" args: dependency: transitive description: name: args - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" async: dependency: transitive description: name: async - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.7.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" build: dependency: transitive description: name: build - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.6.2" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" charcode: dependency: transitive description: name: charcode - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.7.0" collection: dependency: "direct dev" description: name: collection - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.15.0" convert: dependency: transitive description: name: convert - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" coverage: dependency: transitive description: name: coverage - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.15.2" crypto: dependency: transitive description: name: crypto - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.12" file: dependency: transitive description: name: file - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" glob: dependency: transitive description: name: glob - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" http: dependency: "direct dev" description: name: http - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.13.3" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" intl: dependency: transitive description: name: intl - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" io: dependency: transitive description: name: io - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" js: dependency: transitive description: name: js - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" logging: dependency: transitive description: name: logging - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.12.10" meta: dependency: "direct dev" description: name: meta - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.6.0" mime: dependency: transitive description: name: mime - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "4.1.4" node_preamble: dependency: transitive description: name: node_preamble - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.4.13" openapi: @@ -236,182 +236,182 @@ packages: dependency: transitive description: name: package_config - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.9.3" path: dependency: transitive description: name: path - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" pool: dependency: transitive description: name: pool - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.5.0" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shelf: dependency: transitive description: name: shelf - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.0.0" shelf_static: dependency: transitive description: name: shelf_static - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" source_gen: dependency: transitive description: name: source_gen - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.9.10+3" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" source_maps: dependency: transitive description: name: source_maps - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.10.10" source_span: dependency: transitive description: name: source_span - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test: dependency: "direct dev" description: name: test - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.16.5" test_api: dependency: transitive description: name: test_api - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.2.19" test_core: dependency: transitive description: name: test_core - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "0.3.15" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "6.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.intern.sk" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: From 8d490835b7b001f365bc9e6318ef11efd4367f58 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Tue, 26 Oct 2021 09:45:21 -0700 Subject: [PATCH 05/25] Adds setPrettyPrint and the reslver MethodValueResolver.INSTANCE (#10683) --- .../codegen/templating/HandlebarsEngineAdapter.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java index 54d27dc47a7..ef9178e610d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java @@ -23,6 +23,7 @@ import com.github.jknack.handlebars.Template; import com.github.jknack.handlebars.context.FieldValueResolver; import com.github.jknack.handlebars.context.JavaBeanValueResolver; import com.github.jknack.handlebars.context.MapValueResolver; +import com.github.jknack.handlebars.context.MethodValueResolver; import com.github.jknack.handlebars.helper.ConditionalHelpers; import com.github.jknack.handlebars.helper.StringHelpers; import com.github.jknack.handlebars.io.AbstractTemplateLoader; @@ -46,6 +47,7 @@ public class HandlebarsEngineAdapter extends AbstractTemplatingEngineAdapter { // We use this as a simple lookup for valid file name extensions. This adapter will inspect .mustache (built-in) and infer the relevant handlebars filename private final String[] canCompileFromExtensions = new String[]{".handlebars",".hbs",".mustache"}; private boolean infiniteLoops = false; + private boolean prettyPrint = false; /** * Provides an identifier used to load the adapter. This could be a name, uuid, or any other string. @@ -71,7 +73,8 @@ public class HandlebarsEngineAdapter extends AbstractTemplatingEngineAdapter { .resolver( MapValueResolver.INSTANCE, JavaBeanValueResolver.INSTANCE, - FieldValueResolver.INSTANCE) + FieldValueResolver.INSTANCE, + MethodValueResolver.INSTANCE) .build(); Handlebars handlebars = new Handlebars(loader); @@ -84,6 +87,7 @@ public class HandlebarsEngineAdapter extends AbstractTemplatingEngineAdapter { handlebars.registerHelpers(ConditionalHelpers.class); handlebars.registerHelpers(org.openapitools.codegen.templating.handlebars.StringHelpers.class); handlebars.setInfiniteLoops(infiniteLoops); + handlebars.setPrettyPrint(prettyPrint); Template tmpl = handlebars.compile(templateFile); return tmpl.apply(context); } @@ -134,5 +138,9 @@ public class HandlebarsEngineAdapter extends AbstractTemplatingEngineAdapter { this.infiniteLoops = infiniteLoops; return this; } + + public void setPrettyPrint(boolean prettyPrint) { + this.prettyPrint = prettyPrint; + } } From 3a667784acab58d5107daf557cd1ba7bb679e0a1 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Tue, 26 Oct 2021 12:49:32 -0700 Subject: [PATCH 06/25] Adds ComposedSchema to store schema composed schemas (#10653) * Adds ComposedSchema and the ability to set it in CodegenModel and CodegenProperty * Adds ComposedSchemas class and adds getters and setters for it in schema implementors * Adds and uses getComposedSchemas * Makes method private * Uses setComposedSchemas for CodegenParameter and CodegenResponse * Samples regeneratoed, tweaked string representation * Removes null default * Removes anyOfProps, oneOfProps, allOfProps * Removes unneeded line --- .../codegen/CodegenComposedSchemas.java | 66 +++++++++++++++++++ .../openapitools/codegen/CodegenModel.java | 28 ++++---- .../codegen/CodegenParameter.java | 18 ++++- .../openapitools/codegen/CodegenProperty.java | 18 ++++- .../openapitools/codegen/CodegenResponse.java | 15 ++++- .../openapitools/codegen/DefaultCodegen.java | 44 +++++++++---- .../IJsonSchemaValidationProperties.java | 5 ++ .../handler/PathHandlerInterface.java | 4 +- 8 files changed, 168 insertions(+), 30 deletions(-) create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenComposedSchemas.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenComposedSchemas.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenComposedSchemas.java new file mode 100644 index 00000000000..f801853dafc --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenComposedSchemas.java @@ -0,0 +1,66 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen; + +import java.util.*; + +public class CodegenComposedSchemas { + private List allOf; + private List oneOf; + private List anyOf; + + public CodegenComposedSchemas(List allOf, List oneOf, List anyOf) { + this.allOf = allOf; + this.oneOf = oneOf; + this.anyOf = anyOf; + } + + public List getAllOf() { + return allOf; + } + + public List getOneOf() { + return oneOf; + } + + public List getAnyOf() { + return anyOf; + } + + public String toString() { + final StringBuilder sb = new StringBuilder("CodegenComposedSchemas{"); + sb.append("oneOf=").append(oneOf); + sb.append(", anyOf=").append(anyOf); + sb.append(", allOf=").append(allOf); + sb.append('}'); + return sb.toString(); + } + + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CodegenComposedSchemas that = (CodegenComposedSchemas) o; + return Objects.equals(oneOf, that.oneOf) && + Objects.equals(anyOf, that.anyOf) && + Objects.equals(allOf, that.allOf); + } + + @Override + public int hashCode() { + return Objects.hash(oneOf, anyOf, allOf); + } +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index ab9f23fba67..e09c32c96b2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -49,11 +49,6 @@ public class CodegenModel implements IJsonSchemaValidationProperties { public Set oneOf = new TreeSet(); public Set allOf = new TreeSet(); - // anyOf, oneOf, allOf with full properties/tags (e.g. isString, etc) - public List anyOfProps = new ArrayList<>(); - public List allOfProps = new ArrayList<>(); - public List oneOfProps = new ArrayList<>(); - // The schema name as written in the OpenAPI document. public String name; // The language-specific name of the class that implements this schema. @@ -110,6 +105,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { public ExternalDocumentation externalDocumentation; public Map vendorExtensions = new HashMap(); + private CodegenComposedSchemas composedSchemas; /** * The type of the value for the additionalProperties keyword in the OAS document. @@ -810,6 +806,16 @@ public class CodegenModel implements IJsonSchemaValidationProperties { this.isAnyType = isAnyType; } + @Override + public void setComposedSchemas(CodegenComposedSchemas composedSchemas) { + this.composedSchemas = composedSchemas; + } + + @Override + public CodegenComposedSchemas getComposedSchemas() { + return composedSchemas; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -849,6 +855,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getUniqueItems() == that.getUniqueItems() && getExclusiveMinimum() == that.getExclusiveMinimum() && getExclusiveMaximum() == that.getExclusiveMaximum() && + Objects.equals(composedSchemas, that.composedSchemas) && Objects.equals(parent, that.parent) && Objects.equals(parentSchema, that.parentSchema) && Objects.equals(interfaces, that.interfaces) && @@ -856,9 +863,6 @@ public class CodegenModel implements IJsonSchemaValidationProperties { Objects.equals(parentModel, that.parentModel) && Objects.equals(interfaceModels, that.interfaceModels) && Objects.equals(children, that.children) && - Objects.equals(anyOf, that.anyOfProps) && - Objects.equals(oneOf, that.oneOfProps) && - Objects.equals(allOf, that.allOfProps) && Objects.equals(anyOf, that.anyOf) && Objects.equals(oneOf, that.oneOf) && Objects.equals(allOf, that.allOf) && @@ -921,8 +925,8 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getAdditionalPropertiesType(), getMaxProperties(), getMinProperties(), getUniqueItems(), getMaxItems(), getMinItems(), getMaxLength(), getMinLength(), getExclusiveMinimum(), getExclusiveMaximum(), getMinimum(), getMaximum(), getPattern(), getMultipleOf(), getItems(), getAdditionalProperties(), getIsModel(), - getAdditionalPropertiesIsAnyType(), hasDiscriminatorWithNonEmptyMapping, anyOfProps, oneOfProps, allOfProps, - isAnyType); + getAdditionalPropertiesIsAnyType(), hasDiscriminatorWithNonEmptyMapping, + isAnyType, getComposedSchemas()); } @Override @@ -938,9 +942,6 @@ public class CodegenModel implements IJsonSchemaValidationProperties { sb.append(", anyOf=").append(anyOf); sb.append(", oneOf=").append(oneOf); sb.append(", allOf=").append(allOf); - sb.append(", anyOf=").append(anyOfProps); - sb.append(", oneOf=").append(oneOfProps); - sb.append(", allOf=").append(allOfProps); sb.append(", name='").append(name).append('\''); sb.append(", classname='").append(classname).append('\''); sb.append(", title='").append(title).append('\''); @@ -1017,6 +1018,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { sb.append(", getAdditionalPropertiesIsAnyType=").append(getAdditionalPropertiesIsAnyType()); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); sb.append(", getIsAnyType=").append(getIsAnyType()); + sb.append(", composedSchemas=").append(composedSchemas); sb.append('}'); return sb.toString(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index ebd01afdfd2..e0f962215df 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -107,6 +107,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { public boolean isNull; private boolean hasRequired; private boolean hasDiscriminatorWithNonEmptyMapping; + private CodegenComposedSchemas composedSchemas; public CodegenParameter copy() { CodegenParameter output = new CodegenParameter(); @@ -159,6 +160,9 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { output.setHasRequired(this.hasRequired); output.setHasDiscriminatorWithNonEmptyMapping(this.hasDiscriminatorWithNonEmptyMapping); + if (this.composedSchemas != null) { + output.setComposedSchemas(this.getComposedSchemas()); + } if (this._enum != null) { output._enum = new ArrayList(this._enum); } @@ -216,7 +220,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { @Override public int hashCode() { - return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, isAllowEmptyValue, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping); + return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, isAllowEmptyValue, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping, composedSchemas); } @Override @@ -271,6 +275,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { getExclusiveMaximum() == that.getExclusiveMaximum() && getExclusiveMinimum() == that.getExclusiveMinimum() && getUniqueItems() == that.getUniqueItems() && + Objects.equals(composedSchemas, that.getComposedSchemas()) && Objects.equals(baseName, that.baseName) && Objects.equals(paramName, that.paramName) && Objects.equals(dataType, that.dataType) && @@ -393,6 +398,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { sb.append(", getHasVars=").append(hasVars); sb.append(", getHasRequired=").append(hasRequired); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); + sb.append(", composedSchemas=").append(composedSchemas); sb.append('}'); return sb.toString(); } @@ -706,5 +712,15 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { public void setIsAnyType(boolean isAnyType) { this.isAnyType = isAnyType; } + + @Override + public void setComposedSchemas(CodegenComposedSchemas composedSchemas) { + this.composedSchemas = composedSchemas; + } + + @Override + public CodegenComposedSchemas getComposedSchemas() { + return composedSchemas; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index ed1636fc6d5..e326a052fca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -191,6 +191,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti private boolean hasVars; private boolean hasRequired; private boolean hasDiscriminatorWithNonEmptyMapping; + private CodegenComposedSchemas composedSchemas = null; public String getBaseName() { return baseName; @@ -614,6 +615,16 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti this.xmlNamespace = xmlNamespace; } + @Override + public void setComposedSchemas(CodegenComposedSchemas composedSchemas) { + this.composedSchemas = composedSchemas; + } + + @Override + public CodegenComposedSchemas getComposedSchemas() { + return composedSchemas; + } + @Override public CodegenProperty clone() { try { @@ -642,6 +653,9 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti if (this.vendorExtensions != null) { cp.vendorExtensions = new HashMap(this.vendorExtensions); } + if (this.composedSchemas != null) { + cp.composedSchemas = this.composedSchemas; + } return cp; } catch (CloneNotSupportedException e) { @@ -882,6 +896,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti sb.append(", getHasVars=").append(getHasVars()); sb.append(", getHasRequired=").append(getHasRequired()); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); + sb.append(", composedSchemas=").append(composedSchemas); sb.append('}'); return sb.toString(); } @@ -937,6 +952,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && getHasVars() == that.getHasVars() && getHasRequired() ==that.getHasRequired() && + Objects.equals(composedSchemas, that.composedSchemas) && Objects.equals(openApiType, that.openApiType) && Objects.equals(baseName, that.baseName) && Objects.equals(complexType, that.complexType) && @@ -999,6 +1015,6 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase, nameInSnakeCase, enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName, xmlNamespace, isXmlWrapped, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, - hasDiscriminatorWithNonEmptyMapping); + hasDiscriminatorWithNonEmptyMapping, composedSchemas); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java index 1a99e774e59..545628931c7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java @@ -85,6 +85,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { private boolean hasVars; private boolean hasRequired; private boolean hasDiscriminatorWithNonEmptyMapping; + private CodegenComposedSchemas composedSchemas; @Override public int hashCode() { @@ -96,7 +97,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { getMaxProperties(), getMinProperties(), uniqueItems, getMaxItems(), getMinItems(), getMaxLength(), getMinLength(), exclusiveMinimum, exclusiveMaximum, getMinimum(), getMaximum(), getPattern(), is1xx, is2xx, is3xx, is4xx, is5xx, additionalPropertiesIsAnyType, hasVars, hasRequired, - hasDiscriminatorWithNonEmptyMapping); + hasDiscriminatorWithNonEmptyMapping, composedSchemas); } @Override @@ -144,6 +145,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && getHasVars() == that.getHasVars() && getHasRequired() == that.getHasRequired() && + Objects.equals(composedSchemas, that.getComposedSchemas()) && Objects.equals(vars, that.vars) && Objects.equals(requiredVars, that.requiredVars) && Objects.equals(headers, that.headers) && @@ -482,6 +484,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { sb.append(", getHasVars=").append(hasVars); sb.append(", getHasRequired=").append(hasRequired); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); + sb.append(", composedSchemas=").append(composedSchemas); sb.append('}'); return sb.toString(); } @@ -570,4 +573,14 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { public void setIsAnyType(boolean isAnyType) { this.isAnyType = isAnyType; } + + @Override + public void setComposedSchemas(CodegenComposedSchemas composedSchemas) { + this.composedSchemas = composedSchemas; + } + + @Override + public CodegenComposedSchemas getComposedSchemas() { + return composedSchemas; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index d5920a2abc7..2c530aeaffe 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2440,9 +2440,6 @@ public class DefaultCodegen implements CodegenConfig { // interfaces (schemas defined in allOf, anyOf, oneOf) List interfaces = ModelUtils.getInterfaces(composed); - List anyOfProps = new ArrayList<>(); - List allOfProps = new ArrayList<>(); - List oneOfProps = new ArrayList<>(); if (!interfaces.isEmpty()) { // m.interfaces is for backward compatibility if (m.interfaces == null) @@ -2467,7 +2464,6 @@ public class DefaultCodegen implements CodegenConfig { LOGGER.warn("{} (anyOf schema) already has `{}` defined and therefore it's skipped.", m.name, languageType); } else { m.anyOf.add(languageType); - anyOfProps.add(interfaceProperty); } } else if (composed.getOneOf() != null) { @@ -2475,7 +2471,6 @@ public class DefaultCodegen implements CodegenConfig { LOGGER.warn("{} (oneOf schema) already has `{}` defined and therefore it's skipped.", m.name, languageType); } else { m.oneOf.add(languageType); - oneOfProps.add(interfaceProperty); } } else if (composed.getAllOf() != null) { // no need to add primitive type to allOf, which should comprise of schemas (models) only @@ -2511,23 +2506,16 @@ public class DefaultCodegen implements CodegenConfig { if (composed.getAnyOf() != null) { m.anyOf.add(modelName); - anyOfProps.add(interfaceProperty); } else if (composed.getOneOf() != null) { m.oneOf.add(modelName); - oneOfProps.add(interfaceProperty); } else if (composed.getAllOf() != null) { m.allOf.add(modelName); - allOfProps.add(interfaceProperty); } else { LOGGER.error("Composed schema has incorrect anyOf, allOf, oneOf defined: {}", composed); } } } - m.oneOfProps = oneOfProps; - m.allOfProps = allOfProps; - m.anyOfProps = anyOfProps; - if (parent != null && composed.getAllOf() != null) { // set parent for allOf only m.parentSchema = parentName; m.parent = toModelName(parentName); @@ -2696,6 +2684,7 @@ public class DefaultCodegen implements CodegenConfig { } m.setTypeProperties(schema); + m.setComposedSchemas(getComposedSchemas(schema)); if (ModelUtils.isArraySchema(schema)) { CodegenProperty arrayProperty = fromProperty(name, schema); m.setItems(arrayProperty.items); @@ -3514,6 +3503,7 @@ public class DefaultCodegen implements CodegenConfig { } property.setTypeProperties(p); + property.setComposedSchemas(getComposedSchemas(p)); if (ModelUtils.isIntegerSchema(p)) { // integer type property.isNumeric = Boolean.TRUE; if (ModelUtils.isLongSchema(p)) { // int64/long format @@ -4265,6 +4255,7 @@ public class DefaultCodegen implements CodegenConfig { } r.setTypeProperties(responseSchema); + r.setComposedSchemas(getComposedSchemas(responseSchema)); if (ModelUtils.isArraySchema(responseSchema)) { r.simpleType = false; r.containerType = cp.containerType; @@ -4547,6 +4538,7 @@ public class DefaultCodegen implements CodegenConfig { } ModelUtils.syncValidationProperties(parameterSchema, codegenParameter); codegenParameter.setTypeProperties(parameterSchema); + codegenParameter.setComposedSchemas(getComposedSchemas(parameterSchema)); if (Boolean.TRUE.equals(parameterSchema.getNullable())) { // use nullable defined in the spec codegenParameter.isNullable = true; @@ -6156,6 +6148,7 @@ public class DefaultCodegen implements CodegenConfig { Schema ps = unaliasSchema(propertySchema, importMapping); ModelUtils.syncValidationProperties(ps, codegenParameter); codegenParameter.setTypeProperties(ps); + codegenParameter.setComposedSchemas(getComposedSchemas(ps)); if (ps.getPattern() != null) { codegenParameter.pattern = toRegularExpression(ps.getPattern()); } @@ -6590,6 +6583,7 @@ public class DefaultCodegen implements CodegenConfig { ModelUtils.syncValidationProperties(unaliasedSchema, codegenParameter); codegenParameter.setTypeProperties(unaliasedSchema); + codegenParameter.setComposedSchemas(getComposedSchemas(unaliasedSchema)); // TODO in the future switch al the below schema usages to unaliasedSchema // because it keeps models as refs and will not get their referenced schemas if (ModelUtils.isArraySchema(schema)) { @@ -7154,4 +7148,30 @@ public class DefaultCodegen implements CodegenConfig { protected String getCollectionFormat(CodegenParameter codegenParameter) { return null; } + + private CodegenComposedSchemas getComposedSchemas(Schema schema) { + if (!(schema instanceof ComposedSchema)) { + return null; + } + ComposedSchema cs = (ComposedSchema) schema; + return new CodegenComposedSchemas( + getComposedProperties(cs.getAllOf(), "allOf"), + getComposedProperties(cs.getOneOf(), "oneOf"), + getComposedProperties(cs.getAnyOf(), "anyOf") + ); + } + + private List getComposedProperties(List xOfCollection, String collectionName) { + if (xOfCollection == null) { + return null; + } + List xOf = new ArrayList<>(); + int i = 0; + for (Schema xOfSchema: xOfCollection) { + CodegenProperty cp = fromProperty(collectionName + "_" + String.valueOf(i), xOfSchema); + xOf.add(cp); + i += 1; + } + return xOf; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java index b3833e47f6f..fe80c549ac6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java @@ -145,6 +145,11 @@ public interface IJsonSchemaValidationProperties { void setIsAnyType(boolean isAnyType); + CodegenComposedSchemas getComposedSchemas(); + + void setComposedSchemas(CodegenComposedSchemas composedSchemas); + + /** * Syncs all the schema's type properties into the IJsonSchemaValidationProperties instance * for now this only supports types without format information diff --git a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java index 859109086a5..70d25fdaee1 100644 --- a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java +++ b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java @@ -539,10 +539,10 @@ public interface PathHandlerInterface { *

Response headers: [CodegenProperty{openApiType='integer', baseName='X-Rate-Limit', complexType='null', getter='getxRateLimit', setter='setxRateLimit', description='calls per hour allowed by the user', dataType='Integer', datatypeWithEnum='Integer', dataFormat='int32', name='xRateLimit', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Rate-Limit;', baseType='Integer', containerType='null', title='null', unescapedDescription='calls per hour allowed by the user', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "integer", "format" : "int32" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when token expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when token expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ +}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when token expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when token expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "string", "format" : "date-time" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false}]

+}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null}]

* *

Produces: [{mediaType=application/xml}, {mediaType=application/json}]

*

Returns: {@link String}

From ae39d782e01d38c199c78ceb6d96124a03fa4b99 Mon Sep 17 00:00:00 2001 From: cyangle Date: Wed, 27 Oct 2021 01:23:55 -0500 Subject: [PATCH 07/25] Update crystal client gitignore.mustache with shards related files (#10698) --- .../main/resources/crystal/gitignore.mustache | 45 +++++-------------- samples/client/petstore/crystal/.gitignore | 45 +++++-------------- 2 files changed, 20 insertions(+), 70 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache b/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache index 05a17cb8f0a..1a7e69fd1cd 100644 --- a/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache @@ -1,39 +1,14 @@ # Generated by: https://openapi-generator.tech # -*.gem -*.rbc -/.config -/coverage/ -/InstalledFiles -/pkg/ -/spec/reports/ -/spec/examples.txt -/test/tmp/ -/test/version_tmp/ +/docs/ +/lib/ +/bin/ +/.shards/ +*.dwarf + +# Libraries don't need dependency lock +# Dependencies will be locked in applications that use them +/shard.lock + /tmp/ - -## Specific to RubyMotion: -.dat* -.repl_history -build/ - -## Documentation cache and generated files: -/.yardoc/ -/_yardoc/ -/doc/ -/rdoc/ - -## Environment normalization: -/.bundle/ -/vendor/bundle -/lib/bundler/man/ - -# for a library or gem, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock -# .ruby-version -# .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc diff --git a/samples/client/petstore/crystal/.gitignore b/samples/client/petstore/crystal/.gitignore index 05a17cb8f0a..1a7e69fd1cd 100644 --- a/samples/client/petstore/crystal/.gitignore +++ b/samples/client/petstore/crystal/.gitignore @@ -1,39 +1,14 @@ # Generated by: https://openapi-generator.tech # -*.gem -*.rbc -/.config -/coverage/ -/InstalledFiles -/pkg/ -/spec/reports/ -/spec/examples.txt -/test/tmp/ -/test/version_tmp/ +/docs/ +/lib/ +/bin/ +/.shards/ +*.dwarf + +# Libraries don't need dependency lock +# Dependencies will be locked in applications that use them +/shard.lock + /tmp/ - -## Specific to RubyMotion: -.dat* -.repl_history -build/ - -## Documentation cache and generated files: -/.yardoc/ -/_yardoc/ -/doc/ -/rdoc/ - -## Environment normalization: -/.bundle/ -/vendor/bundle -/lib/bundler/man/ - -# for a library or gem, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock -# .ruby-version -# .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc From 6bbafdfa309da6a805c9e606a0eaa223e11a22ab Mon Sep 17 00:00:00 2001 From: Maximilian Zellhofer Date: Wed, 27 Oct 2021 08:28:17 +0200 Subject: [PATCH 08/25] Allow specification of configkey for microprofile clients (#10693) --- bin/configs/java-microprofile-rest-client.yaml | 1 + .../codegen/languages/JavaClientCodegen.java | 10 ++++++++++ .../resources/Java/libraries/microprofile/api.mustache | 2 +- .../main/java/org/openapitools/client/api/PetApi.java | 2 +- .../java/org/openapitools/client/api/StoreApi.java | 2 +- .../main/java/org/openapitools/client/api/UserApi.java | 2 +- 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bin/configs/java-microprofile-rest-client.yaml b/bin/configs/java-microprofile-rest-client.yaml index 2d9796db540..384a6aa7f30 100644 --- a/bin/configs/java-microprofile-rest-client.yaml +++ b/bin/configs/java-microprofile-rest-client.yaml @@ -5,3 +5,4 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml templateDir: modules/openapi-generator/src/main/resources/Java additionalProperties: artifactId: microprofile-rest-client + configKey: petstore diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 328a4b089b2..1d8b4f18ba2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -56,6 +56,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen public static final String USE_PLAY_WS = "usePlayWS"; public static final String PLAY_VERSION = "playVersion"; public static final String ASYNC_NATIVE = "asyncNative"; + public static final String CONFIGKEY = "configKey"; public static final String PARCELABLE_MODEL = "parcelableModel"; public static final String USE_RUNTIME_EXCEPTION = "useRuntimeException"; public static final String USE_REFLECTION_EQUALS_HASHCODE = "useReflectionEqualsHashCode"; @@ -102,6 +103,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen protected boolean usePlayWS = false; protected String playVersion = PLAY_26; protected String microprofileFramework = MICROPROFILE_DEFAULT; + protected String configKey = null; protected boolean asyncNative = false; protected boolean parcelableModel = false; @@ -281,6 +283,10 @@ public class JavaClientCodegen extends AbstractJavaCodegen } additionalProperties.put(MICROPROFILE_FRAMEWORK, microprofileFramework); + if (additionalProperties.containsKey(CONFIGKEY)) { + this.setConfigKey(additionalProperties.get(CONFIGKEY).toString()); + } + if (additionalProperties.containsKey(ASYNC_NATIVE)) { this.setAsyncNative(convertPropertyToBooleanAndWriteBack(ASYNC_NATIVE)); } @@ -964,6 +970,10 @@ public class JavaClientCodegen extends AbstractJavaCodegen this.microprofileFramework = microprofileFramework; } + public void setConfigKey(String configKey) { + this.configKey = configKey; + } + public void setParcelableModel(boolean parcelableModel) { this.parcelableModel = parcelableModel; } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache index f6a69ff6a7c..119494e54d3 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/api.mustache @@ -30,7 +30,7 @@ import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; */ {{/appName}} -@RegisterRestClient +@RegisterRestClient{{#configKey}}(configKey="{{configKey}}"){{/configKey}} @RegisterProvider(ApiExceptionMapper.class) @Path("{{#useAnnotatedBasePath}}{{contextPath}}{{/useAnnotatedBasePath}}{{commonPath}}") public interface {{classname}} { diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java index 01f075d1cc0..3d2ecd955a5 100644 --- a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/PetApi.java @@ -36,7 +36,7 @@ import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; * */ -@RegisterRestClient +@RegisterRestClient(configKey="petstore") @RegisterProvider(ApiExceptionMapper.class) @Path("/pet") public interface PetApi { diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java index 4e5844e79ad..fc5b9b52f29 100644 --- a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/StoreApi.java @@ -34,7 +34,7 @@ import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; * */ -@RegisterRestClient +@RegisterRestClient(configKey="petstore") @RegisterProvider(ApiExceptionMapper.class) @Path("/store") public interface StoreApi { diff --git a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java index 41c31a4d49d..b9fd9ed12a0 100644 --- a/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/microprofile-rest-client/src/main/java/org/openapitools/client/api/UserApi.java @@ -34,7 +34,7 @@ import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; * */ -@RegisterRestClient +@RegisterRestClient(configKey="petstore") @RegisterProvider(ApiExceptionMapper.class) @Path("/user") public interface UserApi { From 5e857e749d33a0de931372e8f6759dd13a4858ff Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 27 Oct 2021 15:07:41 +0800 Subject: [PATCH 09/25] add an option for configKey (#10707) --- docs/generators/java.md | 1 + .../openapitools/codegen/languages/JavaClientCodegen.java | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/generators/java.md b/docs/generators/java.md index 0cb76c15409..8b360b4b427 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -19,6 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |bigDecimalAsString|Treat BigDecimal values as Strings to avoid precision loss.| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| |caseInsensitiveResponseHeaders|Make API response's headers case-insensitive. Available on okhttp-gson, jersey2 libraries| |false| +|configKey|Config key in @RegisterRestClient. Default to none. Only `microprofile` supports this option.| |null| |dateLibrary|Option. Date library to use|
**joda**
Joda (for legacy app only)
**legacy**
Legacy java.util.Date (if you really have a good reason not to use threetenbp
**java8-localdatetime**
Java 8 using LocalDateTime (for legacy app only)
**java8**
Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets "java8" to true
**threetenbp**
Backport of JSR310 (preferred for jdk < 1.8)
|threetenbp| |developerEmail|developer email in generated pom.xml| |team@openapitools.org| |developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 1d8b4f18ba2..1e2740f1858 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -56,7 +56,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen public static final String USE_PLAY_WS = "usePlayWS"; public static final String PLAY_VERSION = "playVersion"; public static final String ASYNC_NATIVE = "asyncNative"; - public static final String CONFIGKEY = "configKey"; + public static final String CONFIG_KEY = "configKey"; public static final String PARCELABLE_MODEL = "parcelableModel"; public static final String USE_RUNTIME_EXCEPTION = "useRuntimeException"; public static final String USE_REFLECTION_EQUALS_HASHCODE = "useReflectionEqualsHashCode"; @@ -162,6 +162,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen cliOptions.add(CliOption.newBoolean(DYNAMIC_OPERATIONS, "Generate operations dynamically at runtime from an OAS", this.dynamicOperations)); cliOptions.add(CliOption.newBoolean(SUPPORT_STREAMING, "Support streaming endpoint (beta)", this.supportStreaming)); cliOptions.add(CliOption.newString(GRADLE_PROPERTIES, "Append additional Gradle proeprties to the gradle.properties file")); + cliOptions.add(CliOption.newString(CONFIG_KEY, "Config key in @RegisterRestClient. Default to none. Only `microprofile` supports this option.")); supportedLibraries.put(JERSEY1, "HTTP client: Jersey client 1.19.x. JSON processing: Jackson 2.9.x. Enable gzip request encoding using '-DuseGzipFeature=true'. IMPORTANT NOTE: jersey 1.x is no longer actively maintained so please upgrade to 'jersey2' or other HTTP libraries instead."); supportedLibraries.put(JERSEY2, "HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.9.x"); @@ -283,8 +284,8 @@ public class JavaClientCodegen extends AbstractJavaCodegen } additionalProperties.put(MICROPROFILE_FRAMEWORK, microprofileFramework); - if (additionalProperties.containsKey(CONFIGKEY)) { - this.setConfigKey(additionalProperties.get(CONFIGKEY).toString()); + if (additionalProperties.containsKey(CONFIG_KEY)) { + this.setConfigKey(additionalProperties.get(CONFIG_KEY).toString()); } if (additionalProperties.containsKey(ASYNC_NATIVE)) { From 27c82e8ed2b894eccc0d20f979354234e7df9f6f Mon Sep 17 00:00:00 2001 From: bflamand <33287817+bflamand@users.noreply.github.com> Date: Wed, 27 Oct 2021 10:35:02 -0400 Subject: [PATCH 10/25] Typescript saga immutablejs enhancements and small fixes (#10444) * first commit: add cli option for saga and records. Added dummy sagas.mustache test file. * More progress with default values. First prototype for isEntity and isUniqueId. * record generation complete * record generation complete * progress with saga generation * progress with saga generation * first fully working saga generation * merge with latest master * removed unneeded "items" properties. * moved global CodegenModel modifications into subclass ExtendedCodegenModel used exclusively by TypescriptFetchClient. Adding missing samples files. * moved global CodegenOperation modifications into subclass ExtendedCodegenOperation used exclusively by TypescriptFetchClient. * moved global CodegenProperty modifications into subclass ExtendedCodegenProperty used exclusively by TypescriptFetchClient. * moved global CodegenParameter modifications into subclass ExtendedCodegenParameter used exclusively by TypescriptFetchClient. * added the missing "allSagas" export. * renamed & reworked "meta data response" flags to a more useful general concept of "operation return passthrough" * added vendor flag keepAsJSObject as escape hatch to support circular dependencies in models and other special cases. Also fixed issues with default values for some records properties. * added autodetection for passthrough to simplify standardised specs. * fix small issue with passthrough void * fix small issues with passthrough void and missing passthrough imports in some cases. Fix issues with enum default values. * fix small issues with passthrough void and missing passthrough imports in some cases. Fix issues with enum default values. * Added "reservedRecordField" feature to support remapping fields names that cannot be used in Records. Added missing export to record: toApi(). * added uniqueId inference. Fix small generation when uniqueId property is an array. * removed feature "reservedRecordField" and replaced it with existing built-in "reserved words" feature. Fix minor issues with typings in generated files. * Changed api recType names to make them less likely to cause name conflicts. Added generated ApiEntities (record, reducer & selector) files. * Moved location of ApiEntities related files and fix issues with exports. * - merge latest master - renamed fake test apis to better fit the "pet theme" - added mode for "SourceOnlyLibrary" (same as used in codegen typescript jquery) * - missing ganarate sampless * - Modified way to export apiEntitiesSelectpr to reduce typescript analysis time for consuming project. Removed tab characters in mustache files. Reformat code for TypeScriptFetchClientCodegen to try to remove false positive for tabs vs spaces. * - added markErrorsAsHandled property to api sagas. Increased typescript version to address some typing errors on library build. * - fix bug in saga interfaces. Upgraded to typescript "strict" mode to ensure proper typechecking info is generated. * - added optional id for apiEntity selectors. Added toInlined() support to convert an entity to an inlined model recursively. * - minor tweak for apiEntitySelector to accept null id * - minor tweak for apiEntitySelector * - runned ensure up to date. * Revert "- runned ensure up to date." This reverts commit ea9b4aed * - runned ensure up to date. * - runned ensure up to date. * - added more enhancements: New "toInlined" functionality. Support for more complex double array types. apiBaseConfiguration is not sent completely for Api.init(). * - merge master * - fix generated api bug in some cases for typescript fetch when no request params are present. * - commented broken tests * - fix generate samples analysis. * update surefire to newer version * - un-commenting test files with issues. * factored similar utility functions in ExtendedCodegenProperty and ExtendedCodegenParameter. Co-authored-by: Bruno Flamand Co-authored-by: William Cheng --- .../TypeScriptFetchClientCodegen.java | 95 ++++++++++++++--- .../resources/typescript-fetch/apis.mustache | 2 +- .../typescript-fetch/recordGeneric.mustache | 28 ++++- .../typescript-fetch/sagaApiManager.mustache | 10 +- .../resources/typescript-fetch/sagas.mustache | 9 +- .../markdown/MarkdownSampleGeneratorTest.java | 2 +- ...s-models-for-testing-saga-and-records.yaml | 62 +++++++++++ .../multiple-parameters/apis/UserApi.ts | 2 +- .../.openapi-generator/FILES | 2 + .../sagas-and-records/src/apis/PetApi.ts | 79 ++++++++++++++ .../sagas-and-records/src/apis/PetApiSagas.ts | 100 +++++++++++++++++- .../src/apis/SagaApiManager.ts | 10 +- .../sagas-and-records/src/apis/UserApi.ts | 2 +- .../src/models/CategoryRecord.ts | 2 + .../src/models/GetPetRegionsResponse.ts | 72 +++++++++++++ .../src/models/GetPetRegionsResponseRecord.ts | 74 +++++++++++++ .../src/models/OrderRecord.ts | 2 + .../sagas-and-records/src/models/Pet.ts | 8 ++ .../sagas-and-records/src/models/PetRecord.ts | 14 ++- .../src/models/PetRegionsResponse.ts | 71 +++++++++++++ .../src/models/PetRegionsResponseRecord.ts | 74 +++++++++++++ .../sagas-and-records/src/models/TagRecord.ts | 2 + .../src/models/UserRecord.ts | 2 + .../sagas-and-records/src/models/index.ts | 2 + 24 files changed, 684 insertions(+), 42 deletions(-) create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponseRecord.ts diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index ed922219016..71d53818647 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -708,15 +708,22 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege var.dataTypeAlternate = var.dataType; if (var.isArray) { + var.isUniqueId = var.isUniqueId || var.itemsAreUniqueId(); var.dataTypeAlternate = var.dataType.replace("Array<", "List<"); + String newItemsDataType = var.getItemsDataType(); if (var.items.isModel) { - String itemsDataType = var.items.dataType + "Record"; - var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, itemsDataType); + newItemsDataType = var.items.dataType + "Record"; + var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, newItemsDataType); } else if (var.items.isEnum) { - var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, var.items.datatypeWithEnum); + newItemsDataType = var.items.datatypeWithEnum; + var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, newItemsDataType); + } else if (var.isUniqueId) { + newItemsDataType = "string"; + var.dataTypeAlternate = var.dataTypeAlternate.replace("number", newItemsDataType); } - if (var.isUniqueId) { - var.dataTypeAlternate = var.dataTypeAlternate.replace("number", "string"); + + if (var.itemsAreNullable()) { + var.dataTypeAlternate = var.dataTypeAlternate.replace(newItemsDataType, newItemsDataType + " | null"); } } else if (var.isEnum) { var.dataTypeAlternate = var.datatypeWithEnum; @@ -724,6 +731,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege var.dataTypeAlternate = var.dataType + "Record"; } else if (var.isUniqueId) { var.dataTypeAlternate = "string"; + if (var.isNullable) { + var.dataTypeAlternate = var.dataTypeAlternate + " | null"; + } } if (var.defaultValue == null || var.defaultValue.equals("undefined")) { this.autoSetDefaultValueForProperty(var); @@ -732,6 +742,10 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege return parentIsEntity; } + private boolean itemsAreNullable(ExtendedCodegenProperty var) { + return var.items.isNullable || (var.items.items != null && var.items.items.isNullable); + } + private void escapeOperationIds(Map operations) { Map _operations = (Map) operations.get("operations"); List operationList = (List) _operations.get("operation"); @@ -816,19 +830,25 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege param.isUniqueId = this.isUniqueIdAccordingToNameSuffix(param.paramName); } + param.dataTypeAlternate = param.dataType; if (param.isArray) { + param.isUniqueId = param.isUniqueId || param.itemsAreUniqueId(); + param.dataTypeAlternate = param.dataType.replace("Array<", "List<"); + String newItemsDataType = param.getItemsDataType(); if (param.items.isModel) { - String itemsDataType = param.items.dataType + "Record"; - param.dataTypeAlternate = param.dataType.replace("Array<", "List<"); - param.dataTypeAlternate = param.dataTypeAlternate.replace(param.items.dataType, itemsDataType); + newItemsDataType = param.items.dataType + "Record"; + param.dataTypeAlternate = param.dataTypeAlternate.replace(param.items.dataType, newItemsDataType); } else if (param.items.isEnum) { + newItemsDataType = param.datatypeWithEnum.substring(param.datatypeWithEnum.lastIndexOf("<") + 1, param.datatypeWithEnum.indexOf(">")); param.dataTypeAlternate = param.datatypeWithEnum.replace("Array<", "List<"); - } else { - param.dataTypeAlternate = param.dataType.replace("Array<", "List<"); + } else if (param.isUniqueId) { + newItemsDataType = "string"; + param.dataTypeAlternate = param.dataTypeAlternate.replace("number", newItemsDataType); } - if (param.isUniqueId) { - param.dataTypeAlternate = param.dataTypeAlternate.replace("number", "string"); + + if (param.itemsAreNullable()) { + param.dataTypeAlternate = param.dataTypeAlternate.replace(newItemsDataType, newItemsDataType + " | null"); } } else if (param.isEnum) { param.dataTypeAlternate = param.datatypeWithEnum; @@ -836,6 +856,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege param.dataTypeAlternate = param.dataType + "Record"; } else if (param.isUniqueId) { param.dataTypeAlternate = "string"; + if (param.isNullable) { + param.dataTypeAlternate = param.dataTypeAlternate + " | null"; + } } } } @@ -912,10 +935,46 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege this.prefixParameterInterfaces = prefixParameterInterfaces; } + private static boolean itemsAreUniqueId(CodegenProperty items) { + if (items.items != null) { + return itemsAreUniqueId(items.items); + }; + if (items.vendorExtensions.get(X_IS_UNIQUE_ID) instanceof Boolean) { + return Boolean.TRUE.equals(items.vendorExtensions.get(X_IS_UNIQUE_ID)); + } + return false; + } + + private static boolean itemsAreNullable(CodegenProperty items) { + if (items.items != null) { + return itemsAreNullable(items.items); + }; + return items.isNullable; + } + + private static String getItemsDataType(CodegenProperty items) { + if (items.items != null) { + return getItemsDataType(items.items); + }; + return items.dataType; + } + class ExtendedCodegenParameter extends CodegenParameter { public String dataTypeAlternate; public boolean isUniqueId; // this parameter represents a unique id (x-isUniqueId: true) + public boolean itemsAreUniqueId() { + return TypeScriptFetchClientCodegen.itemsAreUniqueId(this.items); + } + + public boolean itemsAreNullable() { + return TypeScriptFetchClientCodegen.itemsAreNullable(this.items); + } + + public String getItemsDataType() { + return TypeScriptFetchClientCodegen.getItemsDataType(this.items); + } + public ExtendedCodegenParameter(CodegenParameter cp) { super(); @@ -1035,6 +1094,18 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege public boolean keepAsJSObject; public boolean isReservedRecordField; + public boolean itemsAreUniqueId() { + return TypeScriptFetchClientCodegen.itemsAreUniqueId(this.items); + } + + public boolean itemsAreNullable() { + return TypeScriptFetchClientCodegen.itemsAreNullable(this.items); + } + + public String getItemsDataType() { + return TypeScriptFetchClientCodegen.getItemsDataType(this.items); + } + public ExtendedCodegenProperty(CodegenProperty cp) { super(); diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache index fb3d06db22c..74c0c77d712 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache @@ -337,7 +337,7 @@ export class {{classname}} extends runtime.BaseAPI { return await response.value(); {{/returnType}} {{^returnType}} - await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }{{/allParams.0}}, initOverrides); + await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }, {{/allParams.0}}initOverrides); {{/returnType}} } {{/useSingleRequestParameter}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache index b418276e452..ebdb5fd2498 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache @@ -96,7 +96,17 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname (apiObject as any).recType = {{#isEntity}}asEntity ? {{classname}}RecordEntityProps.recType : {{/isEntity}}{{classname}}RecordProps.recType; {{#vars}} {{#isUniqueId}} - {{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.{{#isArray}}map(item => item.{{/isArray}}toString(){{#isArray}}){{/isArray}};{{^required}} } {{/required}} + {{#isArray}} + {{#items.isArray}} + {{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.map(item => item.map(item2 => item2?.toString()));{{^required}} } {{/required}} + {{/items.isArray}} + {{^items.isArray}} + {{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.map(item => item?.toString());{{^required}} } {{/required}} + {{/items.isArray}} + {{/isArray}} + {{^isArray}} + {{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.toString();{{^required}} } {{/required}} + {{/isArray}} {{/isUniqueId}} {{^keepAsJSObject}} {{#isModel}} @@ -134,6 +144,7 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname public *toInlined(entityId?: string | null) { if (!entityId) {return undefined; } + // @ts-ignore const entity = yield select(apiEntity{{classname}}Selector, {id: entityId}); if (!entity) {return undefined; } @@ -160,12 +171,14 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname {{#vars}} {{#isEntity}} {{^keepAsJSObject}} + // @ts-ignore {{name}}: {{^required}}entity.{{name}} ? {{/required}}yield call({{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toInlined, entity.{{name}}){{^required}} : null{{/required}}, {{/keepAsJSObject}} {{/isEntity}} {{#isArray}} {{#items.isEntity}} {{^keepAsJSObject}} + // @ts-ignore {{name}}: {{^required}}entity.{{name}} ? {{/required}}yield call({{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toInlinedArray, entity.{{name}}){{^required}} : null{{/required}}, {{/keepAsJSObject}} {{/items.isEntity}} @@ -183,6 +196,7 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname if (!entityIds) {return null; } let entities = List<{{classname}}Record>(); for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + // @ts-ignore const entity = yield call(this.toInlined, entityIds.get(entityIndex)); if (entity) { entities.push(entity); @@ -196,7 +210,17 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname const apiObject = super.toApi(record); {{#vars}} {{#isUniqueId}} - {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => parseFloat(item)).toArray(){{/isArray}}{{^isArray}}parseFloat(record.{{name}}){{/isArray}};{{^required}} } {{/required}} + {{#isArray}} + {{#items.isArray}} + {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(){{/isArray}};{{^required}} } {{/required}} + {{/items.isArray}} + {{^items.isArray}} + {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => (item ? parseFloat(item) : null) as number).toArray(){{/isArray}};{{^required}} } {{/required}} + {{/items.isArray}} + {{/isArray}} + {{^isArray}} + {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{^isArray}}parseFloat(record.{{name}}){{/isArray}};{{^required}} } {{/required}} + {{/isArray}} {{/isUniqueId}} {{^keepAsJSObject}} {{#isModel}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache index af6fa7fdd71..9713d9e632d 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache @@ -18,15 +18,7 @@ export class Api { {{/apis}} {{/apiInfo}} - public static init(apiBasePath: string) { - const apiBaseConfig: ConfigurationParameters = { - basePath: apiBasePath, - credentials: "include", - headers: { - 'Cache-Control': 'no-cache, no-store' // this is needed to prevent stalling issues in Chrome. Also it is a good behavior for api calls. - } - }; - + public static init(apiBaseConfig: ConfigurationParameters) { {{#apiInfo}} {{#apis}} Api.{{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}} = new {{classFilename}}(new Configuration(apiBaseConfig)); diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache index 5129d92758c..2aca1ebc23b 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache @@ -105,12 +105,17 @@ export function *{{nickname}}SagaImp(_action_: Action{{/returnType}} = yield apiCall(Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}, Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.{{nickname}}, + const response{{#returnType}}: Required<{{{returnType}}}>{{/returnType}} = yield apiCall(Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}, Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.{{nickname}}, {{#allParams.0}} {{#allParams}} {{#isUniqueId}} {{#isArray}} - {{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => parseFloat(p)).toArray(){{^required}} : undefined{{/required}}, +{{#items.isArray}} + {{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => p.toArray().map(p2 => (p2 ? parseFloat(p2) : null) as number)).toArray(){{^required}} : undefined{{/required}}, +{{/items.isArray}} +{{^items.isArray}} + {{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => (p ? parseFloat(p) : null) as number ).toArray(){{^required}} : undefined{{/required}}, +{{/items.isArray}} {{/isArray}} {{^isArray}} {{^required}}{{paramName}} ? {{/required}}parseFloat({{paramName}}){{^required}} : undefined{{/required}}, diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/markdown/MarkdownSampleGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/markdown/MarkdownSampleGeneratorTest.java index db8a5b29cd0..4e7d98d2874 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/markdown/MarkdownSampleGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/markdown/MarkdownSampleGeneratorTest.java @@ -50,4 +50,4 @@ public class MarkdownSampleGeneratorTest { } } -} +} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml b/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml index 6455e05eebb..29c48ddc0bd 100644 --- a/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml +++ b/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml @@ -295,6 +295,46 @@ paths: - 'write:pets' - 'read:pets' deprecated: true + '/pet/{petId}/regions': + get: + tags: + - pet + summary: Gets regions for a single pet. + operationId: getPetRegions + parameters: + - name: petId + in: path + description: ID of pet + required: true + type: integer + format: int64 + responses: + 200: + description: OK + schema: + $ref: "#/definitions/PetRegionsResponse" + put: + tags: + - pet + summary: Updates the pet regions. + operationId: updatePetRegions + parameters: + - name: petId + in: path + description: ID of pet + required: true + type: integer + format: int64 + - in: body + name: new-regions + required: true + schema: + $ref: "#/definitions/PetRegions" + responses: + 200: + description: OK + schema: + $ref: "#/definitions/PetRegionsResponse" '/pet/{petId}': get: tags: @@ -902,6 +942,8 @@ definitions: - pending - sold default: pending + regions: + $ref: "#/definitions/PetRegions" xml: name: Pet ApiResponse: @@ -1127,6 +1169,15 @@ definitions: - Long description: "Type of pet part" example: Linear + PetRegionsResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + $ref: "#/definitions/PetRegions" GetMatchingPartsResponse: type: object required: @@ -1173,3 +1224,14 @@ definitions: StringBooleanMap: additionalProperties: type: boolean + PetRegions: + type: array + description: "An array of all 15-minute time slots in 24 hours." + items: + type: array + items: + description: "array of values entity id or null." + x-nullable: true + x-isUniqueId: true + type: integer + format: int64 diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/UserApi.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/UserApi.ts index a9bb0facaf2..02f8d3948e0 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/UserApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/UserApi.ts @@ -278,7 +278,7 @@ export class UserApi extends runtime.BaseAPI { * Logs out current logged in user session */ async logoutUser(initOverrides?: RequestInit): Promise { - await this.logoutUserRaw(, initOverrides); + await this.logoutUserRaw(initOverrides); } /** diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES index 354b10210e0..e0b52bf6e97 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES @@ -57,6 +57,8 @@ src/models/Pet.ts src/models/PetPartType.ts src/models/PetPartTypeRecord.ts src/models/PetRecord.ts +src/models/PetRegionsResponse.ts +src/models/PetRegionsResponseRecord.ts src/models/ResponseMeta.ts src/models/ResponseMetaRecord.ts src/models/Tag.ts diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts index fa782af9b14..bdc58ac3a1d 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts @@ -30,6 +30,9 @@ import { Pet, PetFromJSON, PetToJSON, + PetRegionsResponse, + PetRegionsResponseFromJSON, + PetRegionsResponseToJSON, } from '../models'; export interface AddPetRequest { @@ -61,10 +64,19 @@ export interface GetPetByIdRequest { petId: number; } +export interface GetPetRegionsRequest { + petId: number; +} + export interface UpdatePetRequest { body: Pet; } +export interface UpdatePetRegionsRequest { + petId: number; + newRegions: Array>; +} + export interface UpdatePetWithFormRequest { petId: number; name?: string; @@ -357,6 +369,36 @@ export class PetApi extends runtime.BaseAPI { return await response.value(); } + /** + * Gets regions for a single pet. + */ + async getPetRegionsRaw(requestParameters: GetPetRegionsRequest, initOverrides?: RequestInit): Promise> { + if (requestParameters.petId === null || requestParameters.petId === undefined) { + throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetRegions.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/pet/{petId}/regions`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PetRegionsResponseFromJSON(jsonValue)); + } + + /** + * Gets regions for a single pet. + */ + async getPetRegions(petId: number, initOverrides?: RequestInit): Promise { + const response = await this.getPetRegionsRaw({ petId: petId }, initOverrides); + return await response.value(); + } + /** * Update an existing pet */ @@ -394,6 +436,43 @@ export class PetApi extends runtime.BaseAPI { await this.updatePetRaw({ body: body }, initOverrides); } + /** + * Updates the pet regions. + */ + async updatePetRegionsRaw(requestParameters: UpdatePetRegionsRequest, initOverrides?: RequestInit): Promise> { + if (requestParameters.petId === null || requestParameters.petId === undefined) { + throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetRegions.'); + } + + if (requestParameters.newRegions === null || requestParameters.newRegions === undefined) { + throw new runtime.RequiredError('newRegions','Required parameter requestParameters.newRegions was null or undefined when calling updatePetRegions.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/pet/{petId}/regions`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: requestParameters.newRegions, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PetRegionsResponseFromJSON(jsonValue)); + } + + /** + * Updates the pet regions. + */ + async updatePetRegions(petId: number, newRegions: Array>, initOverrides?: RequestInit): Promise { + const response = await this.updatePetRegionsRaw({ petId: petId, newRegions: newRegions }, initOverrides); + return await response.value(); + } + /** * Updates a pet in the store with form data */ diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts index 202ec780b63..b2c83e26802 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts @@ -35,6 +35,9 @@ import { Pet, PetRecord, petRecordUtils, + PetRegionsResponse, + PetRegionsResponseRecord, + petRegionsResponseRecordUtils, UserRecord, } from '../models'; @@ -52,7 +55,9 @@ export const petApiSagaMap = new Map Generator>([ ["findPetsByTags", findPetsByTagsSaga], ["findPetsByUserIds", findPetsByUserIdsSaga], ["getPetById", getPetByIdSaga], + ["getPetRegions", getPetRegionsSaga], ["updatePet", updatePetSaga], + ["updatePetRegions", updatePetRegionsSaga], ["updatePetWithForm", updatePetWithFormSaga], ["uploadFile", uploadFileSaga], ] @@ -180,7 +185,7 @@ export function *findPetsByIdsSagaImp(_action_: Action) { yield put(findPetsByIdsRequest(requestPayload)); const response: Required> = yield apiCall(Api.petApi, Api.petApi.findPetsByIds, - ids.map(p => parseFloat(p)).toArray(), + ids.map(p => (p ? parseFloat(p) : null) as number ).toArray(), ); let successReturnValue: any = undefined; @@ -339,7 +344,7 @@ export function *findPetsByUserIdsSagaImp(_action_: Action = yield apiCall(Api.petApi, Api.petApi.findPetsByUserIds, - ids.map(p => parseFloat(p)).toArray(), + ids.map(p => (p ? parseFloat(p) : null) as number ).toArray(), ); let successReturnValue: any = undefined; @@ -414,6 +419,50 @@ export function *getPetByIdSagaImp(_action_: Action) { } } //endregion +//region getPetRegions + +export interface PayloadGetPetRegions extends PayloadGetPetRegionsRequest, BasePayloadApiAction { +} + +export interface PayloadGetPetRegionsRequest { + petId: string; +} + +export const getPetRegionsRequest = createSagaAction("getPetRegionsRequest"); +export const getPetRegionsSuccess = createSagaAction>>("getPetRegionsSuccess"); +export const getPetRegionsFailure = createSagaAction<{error: any, requestPayload: PayloadGetPetRegions}>("getPetRegionsFailure"); + +export const getPetRegions = createSagaAction("getPetRegions"); + +export function *getPetRegionsSaga() { + yield takeLatest(getPetRegions, getPetRegionsSagaImp); +} + +export function *getPetRegionsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + petId, + } = _payloadRest_; + + yield put(getPetRegionsRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.petApi, Api.petApi.getPetRegions, + parseFloat(petId), + ); + + let successReturnValue: any = undefined; + successReturnValue = petRegionsResponseRecordUtils.fromApiPassthrough(response); + yield put(getPetRegionsSuccess(successReturnValue)); + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getPetRegionsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion //region updatePet export interface PayloadUpdatePet extends PayloadUpdatePetRequest, BasePayloadApiAction { @@ -456,6 +505,53 @@ export function *updatePetSagaImp(_action_: Action) { } } //endregion +//region updatePetRegions + +export interface PayloadUpdatePetRegions extends PayloadUpdatePetRegionsRequest, BasePayloadApiAction { +} + +export interface PayloadUpdatePetRegionsRequest { + petId: string; + newRegions: List>; +} + +export const updatePetRegionsRequest = createSagaAction("updatePetRegionsRequest"); +export const updatePetRegionsSuccess = createSagaAction>>("updatePetRegionsSuccess"); +export const updatePetRegionsFailure = createSagaAction<{error: any, requestPayload: PayloadUpdatePetRegions}>("updatePetRegionsFailure"); + +export const updatePetRegions = createSagaAction("updatePetRegions"); + +export function *updatePetRegionsSaga() { + yield takeLatest(updatePetRegions, updatePetRegionsSagaImp); +} + +export function *updatePetRegionsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + petId, + newRegions, + } = _payloadRest_; + + yield put(updatePetRegionsRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.petApi, Api.petApi.updatePetRegions, + parseFloat(petId), + newRegions.map(p => p.toArray().map(p2 => (p2 ? parseFloat(p2) : null) as number)).toArray(), + ); + + let successReturnValue: any = undefined; + successReturnValue = petRegionsResponseRecordUtils.fromApiPassthrough(response); + yield put(updatePetRegionsSuccess(successReturnValue)); + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(updatePetRegionsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion //region updatePetWithForm export interface PayloadUpdatePetWithForm extends PayloadUpdatePetWithFormRequest, BasePayloadApiAction { diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts index 21a49677e50..2738f38028e 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts @@ -18,15 +18,7 @@ export class Api { public static storeApi: StoreApi; public static userApi: UserApi; - public static init(apiBasePath: string) { - const apiBaseConfig: ConfigurationParameters = { - basePath: apiBasePath, - credentials: "include", - headers: { - 'Cache-Control': 'no-cache, no-store' // this is needed to prevent stalling issues in Chrome. Also it is a good behavior for api calls. - } - }; - + public static init(apiBaseConfig: ConfigurationParameters) { Api.behaviorApi = new BehaviorApi(new Configuration(apiBaseConfig)); Api.petApi = new PetApi(new Configuration(apiBaseConfig)); Api.petPartApi = new PetPartApi(new Configuration(apiBaseConfig)); diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts index 46b07183de4..85c14668d0c 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts @@ -281,7 +281,7 @@ export class UserApi extends runtime.BaseAPI { * Logs out current logged in user session */ async logoutUser(initOverrides?: RequestInit): Promise { - await this.logoutUserRaw(, initOverrides); + await this.logoutUserRaw(initOverrides); } /** diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts index f69d536f6ea..6327071c4ee 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts @@ -61,6 +61,7 @@ class CategoryRecordUtils extends ApiRecordUtils { public *toInlined(entityId?: string | null) { if (!entityId) {return undefined; } + // @ts-ignore const entity = yield select(apiEntityCategorySelector, {id: entityId}); if (!entity) {return undefined; } @@ -82,6 +83,7 @@ class CategoryRecordUtils extends ApiRecordUtils { if (!entityIds) {return null; } let entities = List(); for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + // @ts-ignore const entity = yield call(this.toInlined, entityIds.get(entityIndex)); if (entity) { entities.push(entity); diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponse.ts new file mode 100644 index 00000000000..0bf9c2f561c --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponse.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface GetPetRegionsResponse + */ +export interface GetPetRegionsResponse { + /** + * + * @type {ResponseMeta} + * @memberof GetPetRegionsResponse + */ + meta: ResponseMeta; + /** + * An array of all 15-minute time slots in 24 hours. + * @type {Array>} + * @memberof GetPetRegionsResponse + */ + data?: Array>; +} + +export function GetPetRegionsResponseFromJSON(json: any): GetPetRegionsResponse { + return GetPetRegionsResponseFromJSONTyped(json, false); +} + +export function GetPetRegionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPetRegionsResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : json['data'], + }; +} + +export function GetPetRegionsResponseToJSON(value?: GetPetRegionsResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': value.data, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponseRecord.ts new file mode 100644 index 00000000000..85082fa01a4 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetRegionsResponseRecord.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + GetPetRegionsResponse, +} from './GetPetRegionsResponse'; + +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const GetPetRegionsResponseRecordProps = { + recType: "GetPetRegionsResponseApiRecord" as "GetPetRegionsResponseApiRecord", + meta: ResponseMetaRecord(), + data: null as List> | null, +}; + +export type GetPetRegionsResponseRecordPropsType = typeof GetPetRegionsResponseRecordProps; +export const GetPetRegionsResponseRecord = Record(GetPetRegionsResponseRecordProps, GetPetRegionsResponseRecordProps.recType); +export type GetPetRegionsResponseRecord = RecordOf; + +knownRecordFactories.set(GetPetRegionsResponseRecordProps.recType, GetPetRegionsResponseRecord); + + +class GetPetRegionsResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: GetPetRegionsResponse, asEntity?: boolean): GetPetRegionsResponse { + (apiObject as any).recType = GetPetRegionsResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + if (apiObject.data) { (apiObject as any).data = apiObject.data.map(item => item.map(item2 => item2?.toString())); } + return apiObject; + } + + public toApi(record: GetPetRegionsResponseRecord): GetPetRegionsResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + if (record.data) { apiObject.data = record.data.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(); } + return apiObject; + } + + public fromApiPassthrough(apiObject: GetPetRegionsResponse): List> { + return appFromJS(apiObject.data); + } + + public fromApiPassthroughAsEntities(apiObject: GetPetRegionsResponse): NormalizedRecordEntities { + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + } +} + +export const getPetRegionsResponseRecordUtils = new GetPetRegionsResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts index 621b298df80..9422abd83ec 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts @@ -66,6 +66,7 @@ class OrderRecordUtils extends ApiRecordUtils { public *toInlined(entityId?: string | null) { if (!entityId) {return undefined; } + // @ts-ignore const entity = yield select(apiEntityOrderSelector, {id: entityId}); if (!entity) {return undefined; } @@ -87,6 +88,7 @@ class OrderRecordUtils extends ApiRecordUtils { if (!entityIds) {return null; } let entities = List(); for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + // @ts-ignore const entity = yield call(this.toInlined, entityIds.get(entityIndex)); if (entity) { entities.push(entity); diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts index 52488a844be..2b59b900171 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts @@ -158,6 +158,12 @@ export interface Pet { * @memberof Pet */ status: PetStatusEnum; + /** + * An array of all 15-minute time slots in 24 hours. + * @type {Array>} + * @memberof Pet + */ + regions?: Array>; } /** @@ -200,6 +206,7 @@ export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet { 'tags': ((json['tags'] as Array).map(TagFromJSON)), 'optionalTags': !exists(json, 'optionalTags') ? undefined : ((json['optionalTags'] as Array).map(TagFromJSON)), 'status': json['status'], + 'regions': !exists(json, 'regions') ? undefined : json['regions'], }; } @@ -232,6 +239,7 @@ export function PetToJSON(value?: Pet | null): any { 'tags': ((value.tags as Array).map(TagToJSON)), 'optionalTags': value.optionalTags === undefined ? undefined : ((value.optionalTags as Array).map(TagToJSON)), 'status': value.status, + 'regions': value.regions, }; } diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts index 8292c5ee074..5cb401603d8 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts @@ -67,6 +67,7 @@ export const PetRecordProps = { tags: (TagRecord(), List()), optionalTags: (TagRecord(), null as List | null), status: PetStatusEnum.Pending, + regions: null as List> | null, }; export type PetRecordPropsType = typeof PetRecordProps; @@ -96,12 +97,13 @@ class PetRecordUtils extends ApiRecordUtils { (apiObject as any).recType = asEntity ? PetRecordEntityProps.recType : PetRecordProps.recType; (apiObject as any).id = apiObject.id.toString(); if (apiObject.friendId) { (apiObject as any).friendId = apiObject.friendId.toString(); } - (apiObject as any).otherFriendIds = apiObject.otherFriendIds.map(item => item.toString()); + (apiObject as any).otherFriendIds = apiObject.otherFriendIds.map(item => item?.toString()); categoryRecordUtils.normalize(apiObject.category); if (apiObject.optionalCategory) { categoryRecordUtils.normalize(apiObject.optionalCategory); } if (apiObject._entries) { categoryRecordUtils.normalizeArray(apiObject._entries); } tagRecordUtils.normalizeArray(apiObject.tags); if (apiObject.optionalTags) { tagRecordUtils.normalizeArray(apiObject.optionalTags); } + if (apiObject.regions) { (apiObject as any).regions = apiObject.regions.map(item => item.map(item2 => item2?.toString())); } return apiObject; } @@ -117,6 +119,7 @@ class PetRecordUtils extends ApiRecordUtils { public *toInlined(entityId?: string | null) { if (!entityId) {return undefined; } + // @ts-ignore const entity = yield select(apiEntityPetSelector, {id: entityId}); if (!entity) {return undefined; } @@ -131,10 +134,15 @@ class PetRecordUtils extends ApiRecordUtils { } = entity; const entityProperties = { + // @ts-ignore category: yield call(categoryRecordUtils.toInlined, entity.category), + // @ts-ignore optionalCategory: entity.optionalCategory ? yield call(categoryRecordUtils.toInlined, entity.optionalCategory) : null, + // @ts-ignore _entries: entity._entries ? yield call(categoryRecordUtils.toInlinedArray, entity._entries) : null, + // @ts-ignore tags: yield call(tagRecordUtils.toInlinedArray, entity.tags), + // @ts-ignore optionalTags: entity.optionalTags ? yield call(tagRecordUtils.toInlinedArray, entity.optionalTags) : null, } @@ -148,6 +156,7 @@ class PetRecordUtils extends ApiRecordUtils { if (!entityIds) {return null; } let entities = List(); for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + // @ts-ignore const entity = yield call(this.toInlined, entityIds.get(entityIndex)); if (entity) { entities.push(entity); @@ -160,12 +169,13 @@ class PetRecordUtils extends ApiRecordUtils { const apiObject = super.toApi(record); apiObject.id = parseFloat(record.id); if (record.friendId) { apiObject.friendId = parseFloat(record.friendId); } - apiObject.otherFriendIds = record.otherFriendIds.map(item => parseFloat(item)).toArray(); + apiObject.otherFriendIds = record.otherFriendIds.map(item => (item ? parseFloat(item) : null) as number).toArray(); apiObject.category = categoryRecordUtils.toApi(record.category); if (record.optionalCategory) { apiObject.optionalCategory = categoryRecordUtils.toApi(record.optionalCategory); } if (record._entries) { apiObject._entries = categoryRecordUtils.toApiArray(record._entries); } apiObject.tags = tagRecordUtils.toApiArray(record.tags); if (record.optionalTags) { apiObject.optionalTags = tagRecordUtils.toApiArray(record.optionalTags); } + if (record.regions) { apiObject.regions = record.regions.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(); } return apiObject; } } diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponse.ts new file mode 100644 index 00000000000..7b4c268864d --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponse.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface PetRegionsResponse + */ +export interface PetRegionsResponse { + /** + * + * @type {ResponseMeta} + * @memberof PetRegionsResponse + */ + meta: ResponseMeta; + /** + * An array of all 15-minute time slots in 24 hours. + * @type {Array>} + * @memberof PetRegionsResponse + */ + data?: Array>; +} + +export function PetRegionsResponseFromJSON(json: any): PetRegionsResponse { + return PetRegionsResponseFromJSONTyped(json, false); +} + +export function PetRegionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PetRegionsResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : json['data'], + }; +} + +export function PetRegionsResponseToJSON(value?: PetRegionsResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': value.data, + }; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponseRecord.ts new file mode 100644 index 00000000000..a56180207a5 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRegionsResponseRecord.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + PetRegionsResponse, +} from './PetRegionsResponse'; + +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const PetRegionsResponseRecordProps = { + recType: "PetRegionsResponseApiRecord" as "PetRegionsResponseApiRecord", + meta: ResponseMetaRecord(), + data: null as List> | null, +}; + +export type PetRegionsResponseRecordPropsType = typeof PetRegionsResponseRecordProps; +export const PetRegionsResponseRecord = Record(PetRegionsResponseRecordProps, PetRegionsResponseRecordProps.recType); +export type PetRegionsResponseRecord = RecordOf; + +knownRecordFactories.set(PetRegionsResponseRecordProps.recType, PetRegionsResponseRecord); + + +class PetRegionsResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: PetRegionsResponse, asEntity?: boolean): PetRegionsResponse { + (apiObject as any).recType = PetRegionsResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + if (apiObject.data) { (apiObject as any).data = apiObject.data.map(item => item.map(item2 => item2?.toString())); } + return apiObject; + } + + public toApi(record: PetRegionsResponseRecord): PetRegionsResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + if (record.data) { apiObject.data = record.data.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(); } + return apiObject; + } + + public fromApiPassthrough(apiObject: PetRegionsResponse): List> { + return appFromJS(apiObject.data); + } + + public fromApiPassthroughAsEntities(apiObject: PetRegionsResponse): NormalizedRecordEntities { + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + } +} + +export const petRegionsResponseRecordUtils = new PetRegionsResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts index dd3b631ac85..b14cd7e7195 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts @@ -61,6 +61,7 @@ class TagRecordUtils extends ApiRecordUtils { public *toInlined(entityId?: string | null) { if (!entityId) {return undefined; } + // @ts-ignore const entity = yield select(apiEntityTagSelector, {id: entityId}); if (!entity) {return undefined; } @@ -82,6 +83,7 @@ class TagRecordUtils extends ApiRecordUtils { if (!entityIds) {return null; } let entities = List(); for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + // @ts-ignore const entity = yield call(this.toInlined, entityIds.get(entityIndex)); if (entity) { entities.push(entity); diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts index 292519c32b2..0d892e64a75 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts @@ -69,6 +69,7 @@ class UserRecordUtils extends ApiRecordUtils { public *toInlined(entityId?: string | null) { if (!entityId) {return undefined; } + // @ts-ignore const entity = yield select(apiEntityUserSelector, {id: entityId}); if (!entity) {return undefined; } @@ -90,6 +91,7 @@ class UserRecordUtils extends ApiRecordUtils { if (!entityIds) {return null; } let entities = List(); for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + // @ts-ignore const entity = yield call(this.toInlined, entityIds.get(entityIndex)); if (entity) { entities.push(entity); diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts index b4f59662cbc..aac3503a1f5 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts @@ -34,6 +34,8 @@ export * from './PartRecord'; export * from './Pet'; export * from './PetRecord'; export * from './PetPartType'; +export * from './PetRegionsResponse'; +export * from './PetRegionsResponseRecord'; export * from './ResponseMeta'; export * from './ResponseMetaRecord'; export * from './Tag'; From 1c38bfd5a03162a230bab8a7ae3529f99655fb7f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 27 Oct 2021 23:42:46 +0800 Subject: [PATCH 11/25] update microprofile to newer version (#10714) --- .../main/resources/Java/libraries/microprofile/pom.mustache | 4 ++-- samples/client/petstore/java/microprofile-rest-client/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache index 642e02c21c3..3d5f941907b 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache @@ -77,7 +77,7 @@ org.eclipse.microprofile.rest.client microprofile-rest-client-api - 1.2.1 + 1.4.1 @@ -189,7 +189,7 @@ {{/useBeanValidation}} 3.2.7 2.9.7 - 1.2.2 + 1.2.2 1.3.5 1.0.2 1.1.6 diff --git a/samples/client/petstore/java/microprofile-rest-client/pom.xml b/samples/client/petstore/java/microprofile-rest-client/pom.xml index 39b65989001..2050156fe40 100644 --- a/samples/client/petstore/java/microprofile-rest-client/pom.xml +++ b/samples/client/petstore/java/microprofile-rest-client/pom.xml @@ -66,7 +66,7 @@ org.eclipse.microprofile.rest.client microprofile-rest-client-api - 1.2.1 + 1.4.1 @@ -157,7 +157,7 @@ 1.2.0 3.2.7 2.9.7 - 1.2.2 + 1.2.2 1.3.5 1.0.2 1.1.6 From d1b61bdc04d554275bcb0d3b23e17ef3b2e208d2 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Wed, 27 Oct 2021 14:16:53 -0700 Subject: [PATCH 12/25] adds get/setHasMultipleTypes to Java schema classes (#10715) * Adds getter and setter for hasMultipleTypes and implements it in CodegenModel * Adds getter and setter to CodegenProperty * Updates CodegenParameter * Updates CodegenResponse * Samples regenerated --- .../org/openapitools/codegen/CodegenModel.java | 11 ++++++++++- .../org/openapitools/codegen/CodegenParameter.java | 14 ++++++++++++-- .../org/openapitools/codegen/CodegenProperty.java | 11 ++++++++++- .../org/openapitools/codegen/CodegenResponse.java | 11 ++++++++++- .../codegen/IJsonSchemaValidationProperties.java | 3 +++ .../openapitools/handler/PathHandlerInterface.java | 4 ++-- 6 files changed, 47 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index e09c32c96b2..0a44812ceac 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -106,6 +106,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { public Map vendorExtensions = new HashMap(); private CodegenComposedSchemas composedSchemas; + private boolean hasMultipleTypes = false; /** * The type of the value for the additionalProperties keyword in the OAS document. @@ -816,6 +817,12 @@ public class CodegenModel implements IJsonSchemaValidationProperties { return composedSchemas; } + @Override + public boolean getHasMultipleTypes() {return hasMultipleTypes; } + + @Override + public void setHasMultipleTypes(boolean hasMultipleTypes) { this.hasMultipleTypes = hasMultipleTypes; } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -849,6 +856,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { hasOnlyReadOnly == that.hasOnlyReadOnly && isNull == that.isNull && hasValidation == that.hasValidation && + hasMultipleTypes == that.getHasMultipleTypes() && hasDiscriminatorWithNonEmptyMapping == that.getHasDiscriminatorWithNonEmptyMapping() && getIsAnyType() == that.getIsAnyType() && getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && @@ -926,7 +934,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getMinItems(), getMaxLength(), getMinLength(), getExclusiveMinimum(), getExclusiveMaximum(), getMinimum(), getMaximum(), getPattern(), getMultipleOf(), getItems(), getAdditionalProperties(), getIsModel(), getAdditionalPropertiesIsAnyType(), hasDiscriminatorWithNonEmptyMapping, - isAnyType, getComposedSchemas()); + isAnyType, getComposedSchemas(), hasMultipleTypes); } @Override @@ -1019,6 +1027,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); sb.append(", getIsAnyType=").append(getIsAnyType()); sb.append(", composedSchemas=").append(composedSchemas); + sb.append(", hasMultipleTypes=").append(hasMultipleTypes); sb.append('}'); return sb.toString(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index e0f962215df..38eb785410e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -108,6 +108,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { private boolean hasRequired; private boolean hasDiscriminatorWithNonEmptyMapping; private CodegenComposedSchemas composedSchemas; + private boolean hasMultipleTypes = false; public CodegenParameter copy() { CodegenParameter output = new CodegenParameter(); @@ -159,6 +160,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { output.setHasVars(this.hasVars); output.setHasRequired(this.hasRequired); output.setHasDiscriminatorWithNonEmptyMapping(this.hasDiscriminatorWithNonEmptyMapping); + output.setHasMultipleTypes(this.hasMultipleTypes); if (this.composedSchemas != null) { output.setComposedSchemas(this.getComposedSchemas()); @@ -220,7 +222,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { @Override public int hashCode() { - return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, isAllowEmptyValue, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping, composedSchemas); + return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, isAllowEmptyValue, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes); } @Override @@ -268,8 +270,9 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { isDeprecated == that.isDeprecated && required == that.required && isNull == that.isNull && - hasDiscriminatorWithNonEmptyMapping && that.getHasDiscriminatorWithNonEmptyMapping() && + hasDiscriminatorWithNonEmptyMapping == that.getHasDiscriminatorWithNonEmptyMapping() && getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && + hasMultipleTypes == that.getHasMultipleTypes() && getHasVars() == that.getHasVars() && getHasRequired() == that.getHasRequired() && getExclusiveMaximum() == that.getExclusiveMaximum() && @@ -399,6 +402,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { sb.append(", getHasRequired=").append(hasRequired); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); sb.append(", composedSchemas=").append(composedSchemas); + sb.append(", hasMultipleTypes=").append(hasMultipleTypes); sb.append('}'); return sb.toString(); } @@ -722,5 +726,11 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { public CodegenComposedSchemas getComposedSchemas() { return composedSchemas; } + + @Override + public boolean getHasMultipleTypes() {return hasMultipleTypes; } + + @Override + public void setHasMultipleTypes(boolean hasMultipleTypes) { this.hasMultipleTypes = hasMultipleTypes; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index e326a052fca..c7a22915dbf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -192,6 +192,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti private boolean hasRequired; private boolean hasDiscriminatorWithNonEmptyMapping; private CodegenComposedSchemas composedSchemas = null; + private boolean hasMultipleTypes = false; public String getBaseName() { return baseName; @@ -801,6 +802,12 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti this.isAnyType = isAnyType; } + @Override + public boolean getHasMultipleTypes() {return hasMultipleTypes; } + + @Override + public void setHasMultipleTypes(boolean hasMultipleTypes) { this.hasMultipleTypes = hasMultipleTypes; } + @Override public String toString() { final StringBuilder sb = new StringBuilder("CodegenProperty{"); @@ -897,6 +904,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti sb.append(", getHasRequired=").append(getHasRequired()); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); sb.append(", composedSchemas=").append(composedSchemas); + sb.append(", hasMultipleTypes=").append(hasMultipleTypes); sb.append('}'); return sb.toString(); } @@ -948,6 +956,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti isXmlAttribute == that.isXmlAttribute && isXmlWrapped == that.isXmlWrapped && isNull == that.isNull && + hasMultipleTypes == that.getHasMultipleTypes() && hasDiscriminatorWithNonEmptyMapping == that.hasDiscriminatorWithNonEmptyMapping && getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && getHasVars() == that.getHasVars() && @@ -1015,6 +1024,6 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase, nameInSnakeCase, enumName, maxItems, minItems, isXmlAttribute, xmlPrefix, xmlName, xmlNamespace, isXmlWrapped, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, - hasDiscriminatorWithNonEmptyMapping, composedSchemas); + hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java index 545628931c7..b81bda5f583 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java @@ -86,6 +86,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { private boolean hasRequired; private boolean hasDiscriminatorWithNonEmptyMapping; private CodegenComposedSchemas composedSchemas; + private boolean hasMultipleTypes = false; @Override public int hashCode() { @@ -97,7 +98,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { getMaxProperties(), getMinProperties(), uniqueItems, getMaxItems(), getMinItems(), getMaxLength(), getMinLength(), exclusiveMinimum, exclusiveMaximum, getMinimum(), getMaximum(), getPattern(), is1xx, is2xx, is3xx, is4xx, is5xx, additionalPropertiesIsAnyType, hasVars, hasRequired, - hasDiscriminatorWithNonEmptyMapping, composedSchemas); + hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes); } @Override @@ -142,6 +143,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { is4xx == that.is4xx && is5xx == that.is5xx && hasDiscriminatorWithNonEmptyMapping == that.getHasDiscriminatorWithNonEmptyMapping() && + hasMultipleTypes == that.getHasMultipleTypes() && getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && getHasVars() == that.getHasVars() && getHasRequired() == that.getHasRequired() && @@ -485,6 +487,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { sb.append(", getHasRequired=").append(hasRequired); sb.append(", getHasDiscriminatorWithNonEmptyMapping=").append(hasDiscriminatorWithNonEmptyMapping); sb.append(", composedSchemas=").append(composedSchemas); + sb.append(", hasMultipleTypes=").append(hasMultipleTypes); sb.append('}'); return sb.toString(); } @@ -583,4 +586,10 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { public CodegenComposedSchemas getComposedSchemas() { return composedSchemas; } + + @Override + public boolean getHasMultipleTypes() {return hasMultipleTypes; } + + @Override + public void setHasMultipleTypes(boolean hasMultipleTypes) { this.hasMultipleTypes = hasMultipleTypes; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java index fe80c549ac6..eb95821d6f3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java @@ -149,6 +149,9 @@ public interface IJsonSchemaValidationProperties { void setComposedSchemas(CodegenComposedSchemas composedSchemas); + boolean getHasMultipleTypes(); + + void setHasMultipleTypes(boolean hasMultipleTypes); /** * Syncs all the schema's type properties into the IJsonSchemaValidationProperties instance diff --git a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java index 70d25fdaee1..3f538dd91f3 100644 --- a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java +++ b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java @@ -539,10 +539,10 @@ public interface PathHandlerInterface { *

Response headers: [CodegenProperty{openApiType='integer', baseName='X-Rate-Limit', complexType='null', getter='getxRateLimit', setter='setxRateLimit', description='calls per hour allowed by the user', dataType='Integer', datatypeWithEnum='Integer', dataFormat='int32', name='xRateLimit', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Rate-Limit;', baseType='Integer', containerType='null', title='null', unescapedDescription='calls per hour allowed by the user', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "integer", "format" : "int32" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when token expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when token expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ +}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null, hasMultipleTypes=false}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when token expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when token expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "string", "format" : "date-time" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null}]

+}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null, hasMultipleTypes=false}]

* *

Produces: [{mediaType=application/xml}, {mediaType=application/json}]

*

Returns: {@link String}

From bf7757093466389fe29ab0f78cd9f8ec1b19d478 Mon Sep 17 00:00:00 2001 From: Sergii Baitala Date: Fri, 29 Oct 2021 04:58:29 +0300 Subject: [PATCH 13/25] [cpprestsdk] CMake build system improvements (#10660) * cmake install support * fix option overriding issue * fix alignment --- bin/configs/cpp-restsdk-client.yaml | 2 + docs/generators/cpp-restsdk.md | 1 + .../languages/CppRestSdkClientCodegen.java | 12 +- .../cpp-rest-sdk-client/api-header.mustache | 5 +- .../cpp-rest-sdk-client/cmake-config.mustache | 5 + .../cpp-rest-sdk-client/cmake-lists.mustache | 106 ++++++++++-------- .../cpp-rest-sdk-client/model-header.mustache | 2 +- .../petstore/cpp-restsdk/CMakeLists.txt | 62 +++------- .../client/.openapi-generator/FILES | 1 + .../cpp-restsdk/client/CMakeLists.txt | 106 ++++++++++-------- .../cpp-restsdk/client/Config.cmake.in | 5 + .../petstore/cpp-restsdk/client/api/PetApi.h | 9 +- .../cpp-restsdk/client/api/StoreApi.h | 7 +- .../petstore/cpp-restsdk/client/api/UserApi.h | 7 +- .../cpp-restsdk/client/model/ApiResponse.h | 2 +- .../cpp-restsdk/client/model/Category.h | 2 +- .../petstore/cpp-restsdk/client/model/Order.h | 2 +- .../petstore/cpp-restsdk/client/model/Pet.h | 6 +- .../petstore/cpp-restsdk/client/model/Tag.h | 2 +- .../petstore/cpp-restsdk/client/model/User.h | 2 +- 20 files changed, 180 insertions(+), 166 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-config.mustache create mode 100644 samples/client/petstore/cpp-restsdk/client/Config.cmake.in diff --git a/bin/configs/cpp-restsdk-client.yaml b/bin/configs/cpp-restsdk-client.yaml index 87bce881bbd..fedc628a69e 100644 --- a/bin/configs/cpp-restsdk-client.yaml +++ b/bin/configs/cpp-restsdk-client.yaml @@ -2,3 +2,5 @@ generatorName: cpp-restsdk outputDir: samples/client/petstore/cpp-restsdk/client inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml templateDir: modules/openapi-generator/src/main/resources/cpp-rest-sdk-client +additionalProperties: + packageName: CppRestPetstoreClient diff --git a/docs/generators/cpp-restsdk.md b/docs/generators/cpp-restsdk.md index 9dfbb390514..4fc97b939ae 100644 --- a/docs/generators/cpp-restsdk.md +++ b/docs/generators/cpp-restsdk.md @@ -12,6 +12,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |defaultInclude|The default include statement that should be placed in all headers for including things like the declspec (convention: #include "Commons.h" | || |generateGMocksForApis|Generate Google Mock classes for APIs.| |null| |modelPackage|C++ namespace for models (convention: name.space.model).| |org.openapitools.client.model| +|packageName|C++ package (library) name.| |CppRestOpenAPIClient| |packageVersion|C++ package version.| |1.0.0| |reservedWordPrefix|Prefix to prepend to reserved words in order to avoid conflicts| |r_| |variableNameFirstCharacterUppercase|Make first character of variable name uppercase (eg. value -> Value)| |true| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index f6b62cdd144..a72388d4226 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -38,10 +38,13 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { public static final String DECLSPEC = "declspec"; public static final String DEFAULT_INCLUDE = "defaultInclude"; public static final String GENERATE_GMOCKS_FOR_APIS = "generateGMocksForApis"; + public static final String DEFAULT_PACKAGE_NAME = "CppRestOpenAPIClient"; + protected String packageName = ""; protected String packageVersion = "1.0.0"; protected String declspec = ""; protected String defaultInclude = ""; + protected String modelDirName = "model"; private final Set parentModels = new HashSet<>(); private final Multimap childrenByParent = ArrayListMultimap.create(); @@ -119,6 +122,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { cliOptions.clear(); // CLI options + addOption(CodegenConstants.PACKAGE_NAME, "C++ package (library) name.", DEFAULT_PACKAGE_NAME); addOption(CodegenConstants.MODEL_PACKAGE, "C++ namespace for models (convention: name.space.model).", this.modelPackage); addOption(CodegenConstants.API_PACKAGE, "C++ namespace for apis (convention: name.space.api).", @@ -159,6 +163,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("cmake-lists.mustache", "", "CMakeLists.txt")); + supportingFiles.add(new SupportingFile("cmake-config.mustache", "", "Config.cmake.in")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); languageSpecificPrimitives = new HashSet( @@ -195,6 +200,8 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { public void processOpts() { super.processOpts(); + packageName = (String) additionalProperties.getOrDefault(CodegenConstants.PACKAGE_NAME, DEFAULT_PACKAGE_NAME); + if (additionalProperties.containsKey(DECLSPEC)) { declspec = additionalProperties.get(DECLSPEC).toString(); } @@ -212,6 +219,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { additionalProperties.put("gmockApis", "true"); } + additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName); additionalProperties.put("modelNamespaceDeclarations", modelPackage.split("\\.")); additionalProperties.put("modelNamespace", modelPackage.replaceAll("\\.", "::")); additionalProperties.put("modelHeaderGuardPrefix", modelPackage.replaceAll("\\.", "_").toUpperCase(Locale.ROOT)); @@ -229,7 +237,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { */ @Override public String modelFileFolder() { - return outputFolder + "/model"; + return outputFolder + "/" + modelDirName; } /** @@ -246,7 +254,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { if (importMapping.containsKey(name)) { return importMapping.get(name); } else { - return "#include \"" + toModelFilename(name) + ".h\""; + return "#include \"" + modelDirName + "/" + toModelFilename(name) + ".h\""; } } diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-header.mustache index 3b1c75e86d1..135d033f747 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-header.mustache @@ -9,12 +9,11 @@ #define {{apiHeaderGuardPrefix}}_{{classname}}_H_ {{{defaultInclude}}} -#include "../ApiClient.h" +#include "ApiClient.h" +{{^hasModelImport}}#include "ModelBase.h"{{/hasModelImport}} {{#imports}}{{{import}}} {{/imports}} -{{^hasModelImport}}#include "../ModelBase.h"{{/hasModelImport}} - #include {{#apiNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-config.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-config.mustache new file mode 100644 index 00000000000..2a485225c0c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-config.mustache @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake) + +check_required_components("@PROJECT_NAME@") diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache index b882ea0e723..71f12cad0f8 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache @@ -8,69 +8,85 @@ # # NOTE: Auto generated by OpenAPI Generator (https://openapi-generator.tech). -cmake_minimum_required (VERSION 2.8) +cmake_minimum_required (VERSION 3.1) -#PROJECT's NAME -project(CppRestOpenAPIClient) -set(CMAKE_VERBOSE_MAKEFILE ON) -set(CMAKE_INCLUDE_CURRENT_DIR ON) +project({{{packageName}}}) -# THE LOCATION OF OUTPUT BINARIES -set(CMAKE_LIBRARY_DIR ${PROJECT_SOURCE_DIR}/lib) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CXX_STANDARD_REQUIRED ON) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() -# BUILD TYPE -message("A ${CMAKE_BUILD_TYPE} build configuration is detected") +find_package(cpprestsdk REQUIRED) +find_package(Boost REQUIRED) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +file(GLOB_RECURSE HEADER_FILES "*.h") +file(GLOB_RECURSE SOURCE_FILES "*.cpp") + +add_library(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES}) + +target_compile_options(${PROJECT_NAME} + PRIVATE + $<$,$,$>: + -Wall -Wno-unused-variable> +) + +target_include_directories(${PROJECT_NAME} + PUBLIC + $ + $ +) + +target_link_directories(${PROJECT_NAME} + PRIVATE + ${Boost_LIBRARY_DIRS} +) if (UNIX) message(STATUS "Building client library for Linux/Unix") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable") - set(cpprestsdk_DIR /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/cmake/) - - find_package(cpprestsdk REQUIRED) - find_package(Boost REQUIRED) + target_link_libraries(${PROJECT_NAME} PUBLIC cpprest ${Boost_LIBRARIES} crypto) else() message(STATUS "Building client library for Windows") - find_package(cpprestsdk REQUIRED) - find_package(Boost REQUIRED) + target_link_libraries(${PROJECT_NAME} PUBLIC cpprestsdk::cpprest ${Boost_LIBRARIES} bcrypt) endif() -# Manually set the cpprestsdk paths when not using package manager -#set(CPPREST_INCLUDE_DIR ${CPPREST_ROOT}/include) -#set(CPPREST_LIBRARY_DIR ${CPPREST_ROOT}/lib) -#include_directories(${CPPREST_INCLUDE_DIR}) -#link_directories(${CPPREST_LIBRARY_DIR}) - -#SUPPORTING FILES -set(SUPPORTING_FILES "ApiClient" "ApiConfiguration" "ApiException" "HttpContent" "IHttpBody" "JsonBody" "ModelBase" "MultipartFormData" "Object") -#SOURCE FILES -file(GLOB SOURCE_FILES "api/*" "model/*") - -add_library(${PROJECT_NAME} ${SUPPORTING_FILES} ${SOURCE_FILES}) - -target_include_directories( - ${PROJECT_NAME} PRIVATE - ${Boost_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}/model - ${CMAKE_CURRENT_SOURCE_DIR}/api +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) -target_link_directories( - ${PROJECT_NAME} PRIVATE - ${Boost_LIBRARY_DIRS} +install( + TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) -if (UNIX) - target_link_libraries(${PROJECT_NAME} PRIVATE cpprest ${Boost_LIBRARIES} crypto) -else() - target_link_libraries(${PROJECT_NAME} PRIVATE cpprestsdk::cpprest ${Boost_LIBRARIES} bcrypt) -endif() +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} + FILES_MATCHING PATTERN "*.h" +) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) + +install( + EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache index f8ba4b95e7f..c67a886e915 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache @@ -10,7 +10,7 @@ {{^parent}} {{{defaultInclude}}} -#include "../ModelBase.h" +#include "ModelBase.h" {{/parent}} {{#imports}}{{{this}}} diff --git a/samples/client/petstore/cpp-restsdk/CMakeLists.txt b/samples/client/petstore/cpp-restsdk/CMakeLists.txt index 27ceccc45fd..93dcc141b16 100644 --- a/samples/client/petstore/cpp-restsdk/CMakeLists.txt +++ b/samples/client/petstore/cpp-restsdk/CMakeLists.txt @@ -1,57 +1,21 @@ -cmake_minimum_required (VERSION 3.2) - -project(cpprest-petstore) -set(CMAKE_VERBOSE_MAKEFILE ON) -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -if (UNIX) - message(STATUS "Building for Linux/Unix") - - set(CMAKE_BUILD_TYPE Debug) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable -pg -g3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable -pg -g3") - - find_package(cpprestsdk REQUIRED) - find_package(Boost REQUIRED) -else() - message(STATUS "Building for Windows") - - find_package(cpprestsdk REQUIRED) - find_package(Boost REQUIRED) - find_package(pthreads REQUIRED) -endif() +cmake_minimum_required (VERSION 3.1) add_subdirectory(client) -file(GLOB SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +project(cpprest-petstore) + +find_package(Threads REQUIRED) + +file(GLOB SOURCE_FILES "*.cpp") + +add_executable(${PROJECT_NAME} ${SOURCE_FILES}) + +target_link_libraries(${PROJECT_NAME} + PRIVATE + CppRestPetstoreClient + Threads::Threads ) -add_executable(${PROJECT_NAME} ${SRCS}) -add_dependencies(${PROJECT_NAME} CppRestOpenAPIClient ) - -target_include_directories( - ${PROJECT_NAME} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/client - ${CMAKE_CURRENT_SOURCE_DIR}/client/model - ${CMAKE_CURRENT_SOURCE_DIR}/client/api - ${Boost_INCLUDE_DIRS} -) - -target_link_directories( - ${PROJECT_NAME} PRIVATE - ${Boost_LIBRARY_DIRS} -) - -if (UNIX) - target_link_libraries(${PROJECT_NAME} PRIVATE CppRestOpenAPIClient cpprest pthread ${Boost_LIBRARIES} crypto) -else() - target_link_libraries(${PROJECT_NAME} PRIVATE CppRestOpenAPIClient cpprestsdk::cpprest ${pthreads_LIBRARIES} ${Boost_LIBRARIES} bcrypt) -endif() - -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) - if (UNIX) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) endif() diff --git a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/FILES b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/FILES index 92e7f17c960..4935b4dc57f 100644 --- a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/FILES +++ b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/FILES @@ -6,6 +6,7 @@ ApiConfiguration.h ApiException.cpp ApiException.h CMakeLists.txt +Config.cmake.in HttpContent.cpp HttpContent.h IHttpBody.h diff --git a/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt b/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt index 923a3f75752..cb15320268b 100644 --- a/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt +++ b/samples/client/petstore/cpp-restsdk/client/CMakeLists.txt @@ -8,69 +8,85 @@ # # NOTE: Auto generated by OpenAPI Generator (https://openapi-generator.tech). -cmake_minimum_required (VERSION 2.8) +cmake_minimum_required (VERSION 3.1) -#PROJECT's NAME -project(CppRestOpenAPIClient) -set(CMAKE_VERBOSE_MAKEFILE ON) -set(CMAKE_INCLUDE_CURRENT_DIR ON) +project(CppRestPetstoreClient) -# THE LOCATION OF OUTPUT BINARIES -set(CMAKE_LIBRARY_DIR ${PROJECT_SOURCE_DIR}/lib) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CXX_STANDARD_REQUIRED ON) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() -# BUILD TYPE -message("A ${CMAKE_BUILD_TYPE} build configuration is detected") +find_package(cpprestsdk REQUIRED) +find_package(Boost REQUIRED) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +file(GLOB_RECURSE HEADER_FILES "*.h") +file(GLOB_RECURSE SOURCE_FILES "*.cpp") + +add_library(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES}) + +target_compile_options(${PROJECT_NAME} + PRIVATE + $<$,$,$>: + -Wall -Wno-unused-variable> +) + +target_include_directories(${PROJECT_NAME} + PUBLIC + $ + $ +) + +target_link_directories(${PROJECT_NAME} + PRIVATE + ${Boost_LIBRARY_DIRS} +) if (UNIX) message(STATUS "Building client library for Linux/Unix") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable") - set(cpprestsdk_DIR /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/cmake/) - - find_package(cpprestsdk REQUIRED) - find_package(Boost REQUIRED) + target_link_libraries(${PROJECT_NAME} PUBLIC cpprest ${Boost_LIBRARIES} crypto) else() message(STATUS "Building client library for Windows") - find_package(cpprestsdk REQUIRED) - find_package(Boost REQUIRED) + target_link_libraries(${PROJECT_NAME} PUBLIC cpprestsdk::cpprest ${Boost_LIBRARIES} bcrypt) endif() -# Manually set the cpprestsdk paths when not using package manager -#set(CPPREST_INCLUDE_DIR ${CPPREST_ROOT}/include) -#set(CPPREST_LIBRARY_DIR ${CPPREST_ROOT}/lib) -#include_directories(${CPPREST_INCLUDE_DIR}) -#link_directories(${CPPREST_LIBRARY_DIR}) - -#SUPPORTING FILES -set(SUPPORTING_FILES "ApiClient" "ApiConfiguration" "ApiException" "HttpContent" "IHttpBody" "JsonBody" "ModelBase" "MultipartFormData" "Object") -#SOURCE FILES -file(GLOB SOURCE_FILES "api/*" "model/*") - -add_library(${PROJECT_NAME} ${SUPPORTING_FILES} ${SOURCE_FILES}) - -target_include_directories( - ${PROJECT_NAME} PRIVATE - ${Boost_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}/model - ${CMAKE_CURRENT_SOURCE_DIR}/api +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) -target_link_directories( - ${PROJECT_NAME} PRIVATE - ${Boost_LIBRARY_DIRS} +install( + TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) -if (UNIX) - target_link_libraries(${PROJECT_NAME} PRIVATE cpprest ${Boost_LIBRARIES} crypto) -else() - target_link_libraries(${PROJECT_NAME} PRIVATE cpprestsdk::cpprest ${Boost_LIBRARIES} bcrypt) -endif() +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} + FILES_MATCHING PATTERN "*.h" +) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) + +install( + EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) diff --git a/samples/client/petstore/cpp-restsdk/client/Config.cmake.in b/samples/client/petstore/cpp-restsdk/client/Config.cmake.in new file mode 100644 index 00000000000..2a485225c0c --- /dev/null +++ b/samples/client/petstore/cpp-restsdk/client/Config.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake) + +check_required_components("@PROJECT_NAME@") diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h index 5c861119be7..bfe7bc38c82 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h @@ -19,14 +19,13 @@ #define ORG_OPENAPITOOLS_CLIENT_API_PetApi_H_ -#include "../ApiClient.h" -#include "ApiResponse.h" +#include "ApiClient.h" + +#include "model/ApiResponse.h" #include "HttpContent.h" -#include "Pet.h" +#include "model/Pet.h" #include - - #include namespace org { diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h index 3e60ecb4a81..ded6008b515 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h @@ -19,13 +19,12 @@ #define ORG_OPENAPITOOLS_CLIENT_API_StoreApi_H_ -#include "../ApiClient.h" -#include "Order.h" +#include "ApiClient.h" + +#include "model/Order.h" #include #include - - #include namespace org { diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h index a416b21a1c6..a4a8f2e94e0 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h @@ -19,13 +19,12 @@ #define ORG_OPENAPITOOLS_CLIENT_API_UserApi_H_ -#include "../ApiClient.h" -#include "User.h" +#include "ApiClient.h" + +#include "model/User.h" #include #include - - #include namespace org { diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h index 167a3bbd28c..3a1587556fc 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h @@ -19,7 +19,7 @@ #define ORG_OPENAPITOOLS_CLIENT_MODEL_ApiResponse_H_ -#include "../ModelBase.h" +#include "ModelBase.h" #include diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.h b/samples/client/petstore/cpp-restsdk/client/model/Category.h index 65518e3dbe0..81233b6cb5b 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.h @@ -19,7 +19,7 @@ #define ORG_OPENAPITOOLS_CLIENT_MODEL_Category_H_ -#include "../ModelBase.h" +#include "ModelBase.h" #include diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.h b/samples/client/petstore/cpp-restsdk/client/model/Order.h index 9206b97e20d..6f3a452e0d3 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.h @@ -19,7 +19,7 @@ #define ORG_OPENAPITOOLS_CLIENT_MODEL_Order_H_ -#include "../ModelBase.h" +#include "ModelBase.h" #include diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.h b/samples/client/petstore/cpp-restsdk/client/model/Pet.h index a84abe5f17b..a319e72ada8 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.h @@ -19,12 +19,12 @@ #define ORG_OPENAPITOOLS_CLIENT_MODEL_Pet_H_ -#include "../ModelBase.h" +#include "ModelBase.h" -#include "Tag.h" +#include "model/Tag.h" #include -#include "Category.h" #include +#include "model/Category.h" namespace org { namespace openapitools { diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.h b/samples/client/petstore/cpp-restsdk/client/model/Tag.h index dbe9e0d6384..ccccea9a607 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.h @@ -19,7 +19,7 @@ #define ORG_OPENAPITOOLS_CLIENT_MODEL_Tag_H_ -#include "../ModelBase.h" +#include "ModelBase.h" #include diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.h b/samples/client/petstore/cpp-restsdk/client/model/User.h index 477a78b8216..181736a5a98 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.h +++ b/samples/client/petstore/cpp-restsdk/client/model/User.h @@ -19,7 +19,7 @@ #define ORG_OPENAPITOOLS_CLIENT_MODEL_User_H_ -#include "../ModelBase.h" +#include "ModelBase.h" #include From a33a0fd5c7f8ce7af2dc03ae78cc651f0c68b245 Mon Sep 17 00:00:00 2001 From: martinsaison <63776494+martinsaison@users.noreply.github.com> Date: Fri, 29 Oct 2021 04:06:37 +0200 Subject: [PATCH 14/25] [kotlin-spring] change the suffix from ".kt" to "Controller.kt" when generating a controller class (#10671) * fix: [kotlin-spring] wrong filenames for generated controller classes (#10670) * fix: [kotlin-spring] wrong filenames for generated controller classes (#10670) Updated unit test with correct filenames * fix: [kotlin-spring] wrong filenames for generated controller classes (#10670) Including files generated by generate-samples.sh and export_docs_generators.sh Co-authored-by: Martin Saison --- .../languages/KotlinSpringServerCodegen.java | 2 +- .../spring/KotlinSpringServerCodegenTest.java | 22 +++++++++---------- .../.openapi-generator/FILES | 6 ++--- .../api/{PetApi.kt => PetApiController.kt} | 0 .../{StoreApi.kt => StoreApiController.kt} | 0 .../api/{UserApi.kt => UserApiController.kt} | 0 .../.openapi-generator/FILES | 6 ++--- .../api/{PetApi.kt => PetApiController.kt} | 0 .../{StoreApi.kt => StoreApiController.kt} | 0 .../api/{UserApi.kt => UserApiController.kt} | 0 10 files changed, 18 insertions(+), 18 deletions(-) rename samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/{PetApi.kt => PetApiController.kt} (100%) rename samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/{StoreApi.kt => StoreApiController.kt} (100%) rename samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/{UserApi.kt => UserApiController.kt} (100%) rename samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/{PetApi.kt => PetApiController.kt} (100%) rename samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/{StoreApi.kt => StoreApiController.kt} (100%) rename samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/{UserApi.kt => UserApiController.kt} (100%) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java index c08ecec4e23..93d7428c236 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java @@ -379,7 +379,7 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen } else if (interfaceOnly) { apiTemplateFiles.put("apiInterface.mustache", ".kt"); } else { - apiTemplateFiles.put("api.mustache", ".kt"); + apiTemplateFiles.put("api.mustache", "Controller.kt"); apiTestTemplateFiles.put("api_test.mustache", ".kt"); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java index 6a506a7221f..f949ac99bec 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java @@ -285,7 +285,7 @@ public class KotlinSpringServerCodegenTest { generator.opts(input).generate(); - assertFileNotContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PonyApi.kt"), "@RequestParam"); + assertFileNotContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PonyApiController.kt"), "@RequestParam"); } @Test @@ -315,14 +315,14 @@ public class KotlinSpringServerCodegenTest { generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/MonkeysApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ElephantsApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ZebrasApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/BearsApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/CamelsApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PandasApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/CrocodilesApi.kt"), "@RequestParam"); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PolarBearsApi.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/MonkeysApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ElephantsApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ZebrasApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/BearsApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/CamelsApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PandasApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/CrocodilesApiController.kt"), "@RequestParam"); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PolarBearsApiController.kt"), "@RequestParam"); } @Test @@ -352,11 +352,11 @@ public class KotlinSpringServerCodegenTest { generator.opts(input).generate(); assertFileContains( - Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ElephantsApi.kt"), + Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ElephantsApiController.kt"), "@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE)" ); assertFileContains( - Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ZebrasApi.kt"), + Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ZebrasApiController.kt"), "@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME)" ); } diff --git a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/FILES b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/FILES index e48401e8ff4..fdc7a16af74 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/FILES +++ b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/FILES @@ -4,13 +4,13 @@ pom.xml settings.gradle src/main/kotlin/org/openapitools/Application.kt src/main/kotlin/org/openapitools/api/ApiUtil.kt -src/main/kotlin/org/openapitools/api/PetApi.kt +src/main/kotlin/org/openapitools/api/PetApiController.kt src/main/kotlin/org/openapitools/api/PetApiService.kt src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt -src/main/kotlin/org/openapitools/api/StoreApi.kt +src/main/kotlin/org/openapitools/api/StoreApiController.kt src/main/kotlin/org/openapitools/api/StoreApiService.kt src/main/kotlin/org/openapitools/api/StoreApiServiceImpl.kt -src/main/kotlin/org/openapitools/api/UserApi.kt +src/main/kotlin/org/openapitools/api/UserApiController.kt src/main/kotlin/org/openapitools/api/UserApiService.kt src/main/kotlin/org/openapitools/api/UserApiServiceImpl.kt src/main/kotlin/org/openapitools/model/Category.kt diff --git a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApi.kt b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApiController.kt similarity index 100% rename from samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApi.kt rename to samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApiController.kt diff --git a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApi.kt b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApiController.kt similarity index 100% rename from samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApi.kt rename to samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApiController.kt diff --git a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApi.kt b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApiController.kt similarity index 100% rename from samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApi.kt rename to samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApiController.kt diff --git a/samples/server/petstore/kotlin-springboot/.openapi-generator/FILES b/samples/server/petstore/kotlin-springboot/.openapi-generator/FILES index 612ea14bbdb..50a9d2bc75d 100644 --- a/samples/server/petstore/kotlin-springboot/.openapi-generator/FILES +++ b/samples/server/petstore/kotlin-springboot/.openapi-generator/FILES @@ -5,13 +5,13 @@ settings.gradle src/main/kotlin/org/openapitools/Application.kt src/main/kotlin/org/openapitools/api/ApiUtil.kt src/main/kotlin/org/openapitools/api/Exceptions.kt -src/main/kotlin/org/openapitools/api/PetApi.kt +src/main/kotlin/org/openapitools/api/PetApiController.kt src/main/kotlin/org/openapitools/api/PetApiService.kt src/main/kotlin/org/openapitools/api/PetApiServiceImpl.kt -src/main/kotlin/org/openapitools/api/StoreApi.kt +src/main/kotlin/org/openapitools/api/StoreApiController.kt src/main/kotlin/org/openapitools/api/StoreApiService.kt src/main/kotlin/org/openapitools/api/StoreApiServiceImpl.kt -src/main/kotlin/org/openapitools/api/UserApi.kt +src/main/kotlin/org/openapitools/api/UserApiController.kt src/main/kotlin/org/openapitools/api/UserApiService.kt src/main/kotlin/org/openapitools/api/UserApiServiceImpl.kt src/main/kotlin/org/openapitools/model/Category.kt diff --git a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApi.kt b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApiController.kt similarity index 100% rename from samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApi.kt rename to samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApiController.kt diff --git a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApi.kt b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApiController.kt similarity index 100% rename from samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApi.kt rename to samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApiController.kt diff --git a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApi.kt b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApiController.kt similarity index 100% rename from samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApi.kt rename to samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApiController.kt From 59d58517971f881235b80b162f8984377495b0c9 Mon Sep 17 00:00:00 2001 From: Martin Visser Date: Fri, 29 Oct 2021 06:36:12 +0200 Subject: [PATCH 15/25] Fix library generation compatibility with Gradle 7.2 (#10716) * Make Java libraries compatible with Gradle 7 * Make kotlin-spring compatible with Gradle 7 * Update samples to comply to Gradle 7.2 * Generate samples --- .../libraries/feign/build.gradle.mustache | 16 +- .../google-api-client/build.gradle.mustache | 16 +- .../libraries/native/build.gradle.mustache | 17 +- .../rest-assured/build.gradle.mustache | 16 +- .../libraries/resteasy/build.gradle.mustache | 17 +- .../resttemplate/build.gradle.mustache | 16 +- .../libraries/retrofit/build.gradle.mustache | 16 +- .../libraries/retrofit2/build.gradle.mustache | 16 +- .../libraries/vertx/build.gradle.mustache | 14 +- .../libraries/webclient/build.gradle.mustache | 17 +- .../spring-boot/buildGradleKts.mustache | 6 +- .../scala-httpclient/build.gradle.mustache | 15 +- .../libraries/jersey2/build.gradle.mustache | 16 +- .../java/feign-no-nullable/build.gradle | 16 +- .../petstore/java/feign-no-nullable/gradlew | 0 .../client/petstore/java/feign/build.gradle | 16 +- .../petstore/java/feign/feign10x/build.gradle | 47 +-- .../gradle/wrapper/gradle-wrapper.jar | Bin 58702 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/java/feign/feign10x/gradlew | 269 +++++++++------- .../petstore/java/feign/feign10x/gradlew.bat | 25 +- samples/client/petstore/java/feign/gradlew | 0 .../java/google-api-client/build.gradle | 16 +- .../petstore/java/google-api-client/gradlew | 0 .../petstore/java/native-async/build.gradle | 17 +- .../client/petstore/java/native-async/gradlew | 0 .../client/petstore/java/native/build.gradle | 17 +- samples/client/petstore/java/native/gradlew | 0 .../java/rest-assured-jackson/build.gradle | 16 +- .../java/rest-assured-jackson/gradlew | 0 .../petstore/java/rest-assured/build.gradle | 16 +- .../client/petstore/java/rest-assured/gradlew | 0 .../petstore/java/resteasy/build.gradle | 17 +- samples/client/petstore/java/resteasy/gradlew | 0 .../java/resttemplate-withXml/build.gradle | 16 +- .../java/resttemplate-withXml/gradlew | 0 .../petstore/java/resttemplate/build.gradle | 16 +- .../client/petstore/java/resttemplate/gradlew | 0 .../java/retrofit2-play26/build.gradle | 16 +- .../petstore/java/retrofit2-play26/gradlew | 0 .../petstore/java/retrofit2/build.gradle | 16 +- .../client/petstore/java/retrofit2/gradlew | 0 .../petstore/java/retrofit2rx2/build.gradle | 16 +- .../client/petstore/java/retrofit2rx2/gradlew | 0 .../petstore/java/retrofit2rx3/build.gradle | 16 +- .../client/petstore/java/retrofit2rx3/gradlew | 0 .../java/vertx-no-nullable/build.gradle | 14 +- .../petstore/java/vertx-no-nullable/gradlew | 0 .../client/petstore/java/vertx/build.gradle | 14 +- samples/client/petstore/java/vertx/gradlew | 0 .../webclient-nulable-arrays/build.gradle | 17 +- .../java/webclient-nulable-arrays/gradlew | 0 .../petstore/java/webclient/build.gradle | 17 +- .../client/petstore/java/webclient/gradlew | 0 .../scala-httpclient-deprecated/build.gradle | 15 +- .../scala-httpclient-deprecated/gradlew | 0 .../petstore/scala-httpclient/build.gradle | 53 ++-- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/scala-httpclient/gradlew | 286 ++++++++++------- .../petstore/scala-httpclient/gradlew.bat | 43 +-- .../client/petstore/java/native/build.gradle | 17 +- .../native/gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../client/petstore/java/native/gradlew | 269 +++++++++------- .../kotlin-multiplatform/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 53639 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../petstore/kotlin-multiplatform/gradlew | 298 +++++++++++------- .../petstore/kotlin-multiplatform/gradlew.bat | 53 ++-- .../build.gradle.kts | 6 +- .../kotlin-springboot/build.gradle.kts | 6 +- .../build.gradle.kts | 6 +- .../build.gradle.kts | 6 +- .../build.gradle.kts | 6 +- .../kotlin-springboot/build.gradle.kts | 6 +- 76 files changed, 1096 insertions(+), 815 deletions(-) mode change 100644 => 100755 samples/client/petstore/java/feign-no-nullable/gradlew mode change 100644 => 100755 samples/client/petstore/java/feign/feign10x/gradlew mode change 100644 => 100755 samples/client/petstore/java/feign/gradlew mode change 100644 => 100755 samples/client/petstore/java/google-api-client/gradlew mode change 100644 => 100755 samples/client/petstore/java/native-async/gradlew mode change 100644 => 100755 samples/client/petstore/java/native/gradlew mode change 100644 => 100755 samples/client/petstore/java/rest-assured-jackson/gradlew mode change 100644 => 100755 samples/client/petstore/java/rest-assured/gradlew mode change 100644 => 100755 samples/client/petstore/java/resteasy/gradlew mode change 100644 => 100755 samples/client/petstore/java/resttemplate-withXml/gradlew mode change 100644 => 100755 samples/client/petstore/java/resttemplate/gradlew mode change 100644 => 100755 samples/client/petstore/java/retrofit2-play26/gradlew mode change 100644 => 100755 samples/client/petstore/java/retrofit2/gradlew mode change 100644 => 100755 samples/client/petstore/java/retrofit2rx2/gradlew mode change 100644 => 100755 samples/client/petstore/java/retrofit2rx3/gradlew mode change 100644 => 100755 samples/client/petstore/java/vertx-no-nullable/gradlew mode change 100644 => 100755 samples/client/petstore/java/vertx/gradlew mode change 100644 => 100755 samples/client/petstore/java/webclient-nulable-arrays/gradlew mode change 100644 => 100755 samples/client/petstore/java/webclient/gradlew mode change 100644 => 100755 samples/client/petstore/scala-httpclient-deprecated/gradlew mode change 100644 => 100755 samples/openapi3/client/petstore/java/native/gradlew mode change 100644 => 100755 samples/openapi3/client/petstore/kotlin-multiplatform/gradlew diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache index 93944f967e2..3ce02e7a06e 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache index 766ddb5c52d..b705c38ff8d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -83,7 +82,7 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' {{#java8}} sourceCompatibility = JavaVersion.VERSION_1_8 @@ -94,9 +93,12 @@ if(hasProperty('target') && target == 'android') { targetCompatibility = JavaVersion.VERSION_1_7 {{/java8}} - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache index 46d8966d431..03d303d0dfb 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache @@ -6,18 +6,16 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 @@ -33,9 +31,12 @@ javadoc { options.encoding = 'UTF-8' } -install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' +publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache index a1db459b5ae..2294f8808f2 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache index 67083a02010..d43c2b7874b 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,13 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' + sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache index 43c5845302c..c915f08bb2a 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -83,7 +82,7 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' {{#java8}} sourceCompatibility = JavaVersion.VERSION_1_8 @@ -94,9 +93,12 @@ if(hasProperty('target') && target == 'android') { targetCompatibility = JavaVersion.VERSION_1_7 {{/java8}} - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit/build.gradle.mustache index 34d66a2d530..1266cde37cc 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -83,14 +82,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache index fe9207df02d..bb1ca7c917b 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -83,7 +82,7 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' {{#java8}} sourceCompatibility = JavaVersion.VERSION_1_8 @@ -94,9 +93,12 @@ if(hasProperty('target') && target == 'android') { targetCompatibility = JavaVersion.VERSION_1_7 {{/java8}} - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache index 1fce1c6262c..bd45198caa8 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache @@ -5,19 +5,21 @@ group = '{{groupId}}' version = '{{artifactVersion}}' repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' +publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache index d419eb4010d..08917cfd909 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,8 +15,7 @@ buildscript { } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } if(hasProperty('target') && target == 'android') { @@ -84,7 +82,7 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' {{#java8}} sourceCompatibility = JavaVersion.VERSION_1_8 @@ -95,9 +93,12 @@ if(hasProperty('target') && target == 'android') { targetCompatibility = JavaVersion.VERSION_1_7 {{/java8}} - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache index 69c162d7b6f..699361be13f 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "{{groupId}}" version = "{{artifactVersion}}" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { diff --git a/modules/openapi-generator/src/main/resources/scala-httpclient/build.gradle.mustache b/modules/openapi-generator/src/main/resources/scala-httpclient/build.gradle.mustache index 2ad0d4a0de0..93a6adbe1b8 100644 --- a/modules/openapi-generator/src/main/resources/scala-httpclient/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/scala-httpclient/build.gradle.mustache @@ -6,7 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -15,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +77,17 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'scala' apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/build.gradle.mustache b/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/build.gradle.mustache index 95c49396bfa..cff97a389dc 100644 --- a/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/build.gradle.mustache +++ b/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/build.gradle.mustache @@ -6,8 +6,7 @@ version = '{{artifactVersion}}' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -83,7 +82,7 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' {{#java8}} sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 @@ -93,9 +92,12 @@ if(hasProperty('target') && target == 'android') { targetCompatibility = JavaVersion.VERSION_1_7 {{/java8}} - install { - repositories.mavenInstaller { - pom.artifactId = '{{artifactId}}' + publishing { + publications { + maven(MavenPublication) { + artifactId = '{{artifactId}}' + from components.java + } } } diff --git a/samples/client/petstore/java/feign-no-nullable/build.gradle b/samples/client/petstore/java/feign-no-nullable/build.gradle index e8630f875ec..2231ca517ba 100644 --- a/samples/client/petstore/java/feign-no-nullable/build.gradle +++ b/samples/client/petstore/java/feign-no-nullable/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-feign-no-nullable' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-feign-no-nullable' + from components.java + } } } diff --git a/samples/client/petstore/java/feign-no-nullable/gradlew b/samples/client/petstore/java/feign-no-nullable/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/feign/build.gradle b/samples/client/petstore/java/feign/build.gradle index 6a9e84819fc..8cbc10e5c13 100644 --- a/samples/client/petstore/java/feign/build.gradle +++ b/samples/client/petstore/java/feign/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-feign' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-feign' + from components.java + } } } diff --git a/samples/client/petstore/java/feign/feign10x/build.gradle b/samples/client/petstore/java/feign/feign10x/build.gradle index 68f46df20fd..e934a53d289 100644 --- a/samples/client/petstore/java/feign/feign10x/build.gradle +++ b/samples/client/petstore/java/feign/feign10x/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,18 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-feign-10x' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-feign-10x' + + from components.java + } } } @@ -107,19 +110,19 @@ ext { } dependencies { - compile "io.swagger:swagger-annotations:$swagger_annotations_version" - compile "com.google.code.findbugs:jsr305:3.0.2" - compile "io.github.openfeign:feign-core:$feign_version" - compile "io.github.openfeign:feign-jackson:$feign_version" - compile "io.github.openfeign:feign-slf4j:$feign_version" - compile "io.github.openfeign.form:feign-form:$feign_form_version" - compile "com.fasterxml.jackson.core:jackson-core:$jackson_version" - compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" - compile "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version" - compile "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version" - compile "com.github.joschi.jackson:jackson-datatype-threetenbp:$jackson_threetenbp_version" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version" - compile "com.brsanthu:migbase64:2.2" - compile 'javax.annotation:javax.annotation-api:1.3.2' - testCompile "junit:junit:$junit_version" + compileOnly "io.swagger:swagger-annotations:$swagger_annotations_version" + compileOnly "com.google.code.findbugs:jsr305:3.0.2" + compileOnly "io.github.openfeign:feign-core:$feign_version" + compileOnly "io.github.openfeign:feign-jackson:$feign_version" + compileOnly "io.github.openfeign:feign-slf4j:$feign_version" + compileOnly "io.github.openfeign.form:feign-form:$feign_form_version" + compileOnly "com.fasterxml.jackson.core:jackson-core:$jackson_version" + compileOnly "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" + compileOnly "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version" + compileOnly "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version" + compileOnly "com.github.joschi.jackson:jackson-datatype-threetenbp:$jackson_threetenbp_version" + compileOnly "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version" + compileOnly "com.brsanthu:migbase64:2.2" + compileOnly 'javax.annotation:javax.annotation-api:1.3.2' + testCompileOnly "junit:junit:$junit_version" } diff --git a/samples/client/petstore/java/feign/feign10x/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/java/feign/feign10x/gradle/wrapper/gradle-wrapper.jar index cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 22213 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 delta 21233 zcmV)XK&`)!(F4xP1F(Jx4JjpKHaG+T0N4ir06~)x5+0MO2`GQvQyWzj|J`gh3(E#l zNGO!HfVMRRN~%`0q^)g%XlN*vP!O#;m*h5VyX@j-1N|HN;8S1vqEC)5zH~-}>WrQG zIfFAgqvL}g#YN7Cu8q-t)`pvd>G7NH6((VL|xmyfS7O>Po^9WgZBI<2xN3_Lf}7gO^G&07K)$W`=0db17($ z7j8M2qso7dGMF2|WyB~U6mN|2g<8f5$<^Ix1uu(&m*te8o?ORjEmnP>ERXg~IRr1N&l4W!wPQL`S za1fU*v|_)7HndwffDQ}C(NC=U4ZLDu0tE|4am;_B_vTpxlNPRE%D}X=yh>%=fi}Yd zrFE$E>4~Zv*z;o3C=q82yk_BbT($59t{QlgA@e`FPDyX!jn7^eMXFBkV~jV0mXsZ8 z-}P;wmukJc3@2)Xq|j)*{DOG9D%_&T^lUSnSEuD*WFDed2z=Wu)8H*~rz*y;QRkDn z?T&xz2goVDQ!wI~9NHD9Z9BEeIp14S2ANvpmSK#`q0r{}O*uokoSY$T-ln#7>`^mx z(QOz9@r8zFIWctoHOrx)H6-VT)-c%*;tLl3;o#X@Z{T%i90*&~RkiH^3&`Ozk9ci1sv_HN5u`p)WAlRe$?k z>`Q$F?Hib>uGa7hbdtC4AWF(mbL3+f)6)DkVshyv<2}?xAX#aO)nOPU*XXkUmax8~ z?7kk^fA0UEOEsZBoNAhPX>MzuoUvUDzk^N6P@jEj310(oLrE-$UH4^zWC90Ffq?1pp z#$-3s%c`W9+R3Cel~f(HfeQw#2Fh8BZirf56O@(oj>k$`_pQ!bUK~v~-dV-IRWyIN z+4_iz_V+HWK3PMH<2i*EBIeTbc|589dFk>&o-#E51yD-^1PTBE2nYZG06_rHwF*8L z0ssI^1ONaulMxaglROR@e^c#l5r$1aeno>ZX)q=xXqr@; znEsl=1lDYK$uLNHD~$;dO?&_!%6Ml>D`^SU{joE1?>Xn5J2&&|_xGOw9^$EmSu9zw zv1DR7jTH;Gv6{wO8tZy{$HE5gT1db(v1#HSL+XVe`syV^!Y%AEeZJwFI2;#8v=5B9k9^?4Lbs;1wj+>VTndfOe<6ru8KTt$+>eiMd5Rs!B`3&NDD zk!*Mk$?Jjex{|kALVB;FZWu(ozJ6Yy%rM^&YKQ3ENY=-4eiSmSxrOQ{{+WBBP~K!v z*~EQ@Rd;IPt+MXge>f^JEMEX*uy&)4tclmY?mcsoDrz4#GMFQc3p_E*HI-@=Te{y5 zZ6QrOuu+6Zm-shv!exL?mP~BfG~GwK$YT>v7>fUQnGCs8V`mbJQ=4YU#>9Y!4R5#C zR^pIhR?kI7gj79-4YxW5QPK|^<-++8!?Ov%f23y5#>j+Ua?BypeOwyA`f@7g5Dn;)?10WglIV{~=Z~ccn8Ex=`Z=w} z$QPUJD|ZYSGWpWGn^=fxw_^MvuEnJdYQ2D~uy8}evgtoiO9KQ7000OG0000%08gEt zAHfa)023aQ4iYDStyu|pTvv7ek7jvKqo>7VTlUzAGmc|N)*3sG9m|Om%j?+kNY+>~ zvg0^U(vvjyXhxZNV_R8(K;0H-3WcfUr0ek4zLWbTKVm=t37t>6+5LbfKlR z1ogjn7LBBd2>ohX_uY5yxo1EBy-)ti4_^ENfUWXq0PFC7D*;4ty_&NxtKnDG@M{LX z5`Z7Su3mmaas8%=-wNQX_-zBf6M%)^4dD0iwE*6S-&eyQD4su5!yg5(1z$Jt#|FL; zz)Ji{04wm#06u^}Rm*>-hCes)7XiE(iVX!5YSS43h)`h)9hoRscDv zHKopwdPQn5Wtk~K1Me_oc|cakN>dt@)K!M8HY8+!${JJF8ghdvHwG{u>rA=Hl(3S! zo|eeXrfe|f7E?BwvdNTNO=&V^vl7s3NQ)t@0xObCI_bR$JCkuTf}8d^qjomo?n_-r zCQ|lDZ#p%Wb~2gnc*b?eC83Tjz%O?kOV$L;9vixjlPQymB52}f%%?2!>=8tY6#+*W> zGVw#%(NR?~Rj0aWPcl2v=P282+>~o4x}D^hJ6@*187Y$FFcVxXyuGQc(#%{kWHfj6 zJiTm=q%*8+r3Ic;))h3C{OQTMlUbL4QFrVKE?335ePwAilAK#Kq}`AXLvAxPL zxt#`Q>`|vb9T%)y5bVth1ImcR4cSKB40@NHi4QMK=;n&~TI__%Twu8L&YY{LMv|i` z!p@MLakg*UpB&aLu&Jp+X;ngyhB3#@Z%Q9^-0>7su%?VJ?TjXE)!VySF;*ik*k&MpE-yOLvJ3U5@yn=EADTFBy@h4VNk z*tG=s-10-t9ZHn#7B1kTg~#wFW? z$z7J*ExRqbNA9)oHe9msAv|Nr9%0MhP;9j>4Ft|ec|)?3%W4+?3V); zp2c$(X7CcDs0?q@X|v>@9I_;$&|>Wp4p?$Tx-B^>QA2tx>6K%a^eJoKEitAwuFxf& zophZMLylY0FKof(C6MSTm9QXG6dAr?XToJ0+m*2chMchEbuwtlNjW8eA@^BwS_Uk+ zUq#<4FIh{@;3Z2QP=l?1%o|d(VKt0!pg70EG_DGKDrp%@MrBNJ>BOGCXe4?t+@E2I zh7TP--W%3<6P^z^;naC29k!D+GUE*MlnKvaO4v<>ix9|wdCLJHjDxUUm zZ^9wksBM`zdoi3XDU7wVewDgZI{r`r-c~K_o~~>>p?lk(H_wuPafw^_IG(rUtn%`l zBrKT_b;VG7+o?9u-lYM~l9Ws`)pM}L<6r?oSn{Bx3nf&(_mzc7?=b!WZK1_!5baXTr&p8_r}WCsVXx zBuv^Aktck3;HWOsi^RZur?eM3MYR-J&BikAh*KW*oY|Mn4HfDC|f1AsumOLzfj}SsCGO%g$wzj9oCujYVE=b*J=Mx?~Wwl)30E_=pK)9Jg=`(ciLTc^;pZQLEJ2 zX%h2^Xeb_kx^p*A|HQeGcsir+zbDz2Zc0bD#5s4_T-LPs#v5v?eDhOlb#ymbp4K%B zWX`)t2I*Cw^I(?O>9yp%{!oB%(9?s*S<0@jI7$h7+lb zx`HvTvEgw?p^w4&p;X4r&w2@qg_*6wZE|)j>nLPajd37tk4@-H;pA(|_hL%q|F%u} z=V#4-*@?`8a2KxHsw4c$=OiQ6_L?sLg;Q8vhTYORs2tXSqvF1K;njOrzI^8)QfM(- z;fBsYt8^B`ZTuld6&0xD6u&O+t+40RqCMqO7JaX*ezi5mE1o=`I>#E=Ss|dOD#WP!b2P% z=375}@bX#R+#;=Q(~uXmm`5~Y6~|VXXv3qNHRl=edb~mZ8nId{5ur>~ z1$Eep6}X+j*@lg{L))}1FS%sXrjkvYw7XS$men??nX=AHDnG9Z*7ay>ffd2PRn%NZ z-3+WjnMUnZ)G1p$+Lk)K|4znYCzfM>m)33N_Z4)%S@X(r5`PSrs3IR-kKS0{nnQgK z4JVqFtIOtm%*)+Px%Y5>ua+CmZz=gyj~~ZRXkGRANxX$S-^#g{lo;o4D=PCez^{LU z=#!{)`dY3cn8Wf;{|r_P&S2#r6*o>}RW#(!VRfgsxh3SCMu;I_(`kgf!L=cOBZnJ8 z-W+c1^et<`OJ=93-fr3+sNPXiy`whd3z<2D2e(&OJq_n7*5`2Zd$95|*buxWhmAAX zG#I>f8co+4YgSfYvUk)p*6L?%W9U0m`6+j3}s5BaXc4Eb{CXuFPPQf_+=8#?PNuN!JTRDbOS2E~W# zc$uMk8Q;>+d@6q$8#wOc`T=qrV%Q@rwZkl_BP{lA7THlIIEpToMg+&ui#`TAh5;PM z2s1jtSr#XloRdt;DZCx0@eJO&Pq4 zyfw6F5};W~9Ckek zOV{pQtlie&-80xdIE{OP_vWytnF!p)XAXPWjC1glhr)+w$HNTOBMjv0v5L736Ugo+ zl+D5O?hWXl@IVd+gNHnSpGPEz!_n5@5%u2f<@=x~cr-?0r?*YG9?hYr(--oFd|ZqUdRl_L zIUFNH&lk~mnLCfGo&EE7hP+aVyVE;^fx+Mjg;%e;MiWi;z%eGZPx~4x#Hg8(f$o)e zVm14so&B(rU2%-n-N#xVXSKh9_5BztT*d1?Mqo8LKEZ5%dC0v1pW@6*%4&QXmzlwF z#yC%Vj9GsHpW&>J*zgOSDTsc&6zj)zTzT^#7=IR5Xrqd73#w+R-lJ=iosd%{9h>EG z>MfB-&{S@jCIIBmq$l~NlDQ=~$TR6^@Fd4*>vh~jfLmLr7oI448ai`0)t0Z9%dD>Z zE|)5%Q6G$dA7lbQMBATX8-1AQ_H0?DY$;j4Mb|QKF0}Y_`XIN6BQKUJr3Uf}TD84> zT%5s61v|e%C8{t_2T#+&?%@5}+B3@9-~${xy+K<&e8D00@CSz*Or2oXzc)7M<-->n zWSPVU{UOebkUutPw!{V-{H+{}w%ApS%ynVD3qDR>JD;b8pWuz=le`^$ie2z&+{%n8 z-wx#sD){CnPJdo!#$qDApnVGx0Iq4@LOcb&s4oOzcF~tO^HI)r{32(5a{iLm{L92_ z@RsEv0;~T#HMzEqwW0necO9`j@V~QOB*_X1nPWCLrwIT64U;f0K7S&i6YXd|V?ZZS zgeeA#W+4ela3DYeB5;7^v`7bcw_xLiPIB19a2uR6(GGhz4z+$-a`_{ z$v?ZN)0GA3%lDzVoi}g(SLeMM9(nxXD*#rB1qz;_Vl$qpLdCP>@N7BUt>8H-DkQlA z&sFd|1<&{61%A9x5`WICcoAOg$4mTpse*e{)Jn!$T#$<|Q}J@VLcuFl%yh}GQt@is zD`D@G!)xU5S{3)>bqZeZ#~b{3qY8mHDR{Grg?NjK1$e81x2aex0q(~G3Lf<1?JB}} zhl+RNUGnSQa(Is%-s{IjKQ5`L#QWs@{VG0y530yuSj7k)Qh)Ib?*`gL{8|Z^`^L<9BAsXtypqkgTT~Q zGnumWq`hB{r+*EBP|5bT_THARNPAljr!LE~XJ1!)Z;m>zfLgMtVq+{Bvo{Nrg&Xz@ z_*%_=N~?*)lE$ud;+SFe>c`@SRML#<@%_3Llk+UmXAj0w0!t#MHPAF*>HTq|>5Qch z4H;Hbhci9k&UWgtB#rVV_$x3oe5ll9N4jne5Uz;NN!kL zyrJh@$~F?abE5J9TF15#LotW!7~|(5(vj1jw~y@8Qbn+Ik!xStj>VhC>C#RYYaf;E zG!wM5B7bfU3`k|?dPO1PEOK8>mePLKh^B3m{ENK!4-|4qx3`~-8m>7CzRuw2{r$ym z5V$E^7?8r5jIHWQa+O|C#NJRG&f2U(`7)-3OW6EzW~J0Emk~+BZrZoEi)(^%<`)oq z&LwUAY|b9?gz^$?m)RQEQ>ixN_%<`0>~FU$$AA8*J+>Y_xl=s3AlWaS)k$D_>O|_YWN<$Po7f(<)_jy!xmWme;hjv zKYzdvHT(!aR`3%IkK(7yqVYr2siy`RL=8W~&lUVa!!PkG4KX}L!w^nsIDw}s__c=L z;I{&EJk08nOGjZvR0*R zPNct>aIQgr#GeGT{5+yb?#>nCS%1M_H2f8R)9`m0+<)MjhJWH3%fp?_3u}=; zRl$~j;ooxKV+#JG;c@&|p&%i|6h)M2!Y9fVQK1P%_?b^PI6?H(cuwq1C+%3m$So3I zRBA$%TKJArc}-LaO<;4Yo=lo{sNbNG35GBfmFI4V{t6v8tx(n{A=dfOam!4EqJL~j z$MlpDs$ZO{Ur~^U-N#NCQCkyJMYR-Hqljsms1*T4)M;Wm(yTN$KH!>|foqDGsfk%) zHZxKL6){H>b0u+}%nw2YuX`w^%=s*d<1+GGqvbnJ*3Ed_JhLx(GRec(J=Px{>M3v8W4Rn9|U1=-M0G#8leB}U#m(sqli z7=dsx1bwh@;_gcucpwfGcS5%itSM=slWOOM1{d|1(qMSs(`t)llXm!qz<*u^b*w9S zt`?L}M}T5DR?zfAUTNbg!mZh!YhESSk#mdZRi@YljUJH2ZK{(Q6qi@CI;Q5tcc#+B za#C8icpTlBSLWtSy0P>wyd^7S*`>=nmS!14ab4aQtQ7gzhbI+XFUVuG=E=tF9Dg>dQZ`^Xb-&Q0 zF$?pV2^}bI@F9o@c0ynmXH!tcd3WAi<9v7CyoU2VdGl%T z^P4wyj=iKb@mKJ-ynk^RQ!Y6y`#4rO#1Qs#)LaG}z!Ugei9Q@87dMN0s8khcS4U75 zSvmsWP7dX}Mp4l>45ir@^kv{b5cHK_MrB`FpsJ_O7tne#n3_TLIJriWr%CdGQPgs0 zpt(F)F89_2eT^ARZ>|`@jAkXMkXkW{nPi!j!R!ozL9Wbc_J0Tc%SSL*PUbaNE*ru8 zW;Libj$%PyuyPcFW8kJhXc#w-VqssoTV>#Af1v;^k-n^BLSk33nS{S$uXR#hnLo@EiMx1AiE?^6;pw)5Rkn0{C!ktd+ zM)^ECOm|iygMTCZnnDSeh;$fbl=C2T93$5rBoReFU4E2Y297fv2Aw{DK`4}U2d|EY z8OQU~;sj0-?E>|SBf)Sa9XSFfzxnpaMmb8XDbg}Jaungd#z4a`8b`2{KFpGq=8?u7 zQccBxZKy*Bme71@)Jzu&7L|bWb<{CRl`p=mz_r=5s()hqmbw2f7A4n?yyU8K`~pJQ zIf#}l-z-Pr43_h6MW89LGJ{)(v8ouZI}dJF4vw$UEZn1Xoz%NGpk}Z-gEbkf&EU2j z4`6C!6zltz4&(N#6ww^mkio|LFk2D>n|znCxv#9TX9Qb@amQ6UsO2GS6}TA5s?|1( z_KOa34S$no9X8Qh9Snb&quUY&2mGpG$^@uk9Z%6bo}e(pxry3!P|r>VS?b=%z}0Zy zX`JD#jyuod9JTMHRcG-ee$8X5xvNj+UoCul6|8#i|KCUIqArtQ>s0JF6qXyyioU3tbsYqwJmXXE^uG3KC^OYBb+;uk( zgngt^PxzZI4+0S|Y!oi4i(3u9W<@5f4?aIW7QPiz@|`rQqir_!sL1e^Z2N#MNr;J?xMgAp*G!nmnlLbEViHq2))?lm z=*YwvZhy=0kYS|l?al6?utSFN|6|l9RWU1ai^=&2rKXjTy?x9q5Eowg!!6 zfbkRQ9aj1V{j*YCrVJbgR zS~!JPT0BMaOAC{u5?~Y1*d#J+3PWsKA!i~P#(yyZsF{Q_HIvOI=toaJF7up5c`sY~ z3hg&^?Gv=*30+8bc%AL=nvKEJ^iLr%_>7GV;0{%dcvj3yk?qt;SI@&8oD^myhs1X= zcR@^Mx*u3?aUS=2h?7?n-*4@BTl^h~%fwkFo^Ne-rG5Zb7J zP#Q}E1PTBE2nYZG06_q={1C9D6aWA~EdT%@lMy-{lZ!wpA87Q&7Mq(TT1 z3;_uc166q>FUiO(@y#2OsI9g|acNyp+k$niiVIayNx&%DTGy)8svPvqnLw2LQ6ldte(KMm(8LSLZp zR38`m>3%L!xY$plxWrEn@H81Im1eraGyF83NBMas&+=0_&z9FY(#(}+-T*qt$NPA` z!euhOz)$D$LK!^4$BU%@nx9YP#XeplGvy-qQX#DHe^VYW^YKa2FVE&mUg77Hxyp~H zl?qq;X+Czv+$w2SOLK~_TO%B5e7sgh)+xMR;aVS`>f<^Y*x;unyiuC3`{{K)P2tlO zK0_Wi`RQcV{Ir5MD_rlVRlx=`VZ6uy{At&GM^EgUXy z*6X)euTkA74{Pzb9%l+Htys2rUDet%mR8oRe_d0#WZl}zRn=##Uc7cWQ%=>H+E%SJ ztVNqjYfK{)ZCb!IuskOGqUL%noX~xI36nP*YiiOBrqNX~qp7sX&>F&eX{({NwCF}@ zl{JZ#zJ^$9G#t|!n8rB~RxVA>%PuXN*}NDcMmC3q^F*fwt21e^Xq4VoA5O$WTlHn3 zf3Uu|zFv>VS87qslC9Kk;sF`ZuUC3=0iCPx-~>Ut)3d8|Qa8eA2M z>eY$JX5Cn;VNyI0tJlKoH6tYN$w9Z-9D?V@IPPrw8q)jg4P7(!rJ=aVG~ZE!TDyls z8$(SALo-9M=z^)X(?hXRv5B~%K69RFf9g@Qf<_J4-Uw|@$oo1Y%rwYmAJxs$b!#d? zlAB3V)2z*$Gq)xYVHz41)t6>WDtsx1tNIQz%|4=)C-qx}ofX-6X~;+m)uXd&ZN4GY zBJZ#zaH6-!vbe(Eg&Y_!;CMGz8We{J%( zUY{^RW_#&MU=cuE8fwzxrmSofr{|{ksEoEGOz_pU2xb{(@NP~tHVV|UHZDQ5ZElD6 zHB)2C#-_FeOe6bAwZvK_j;=Aa`YkK977J$ze^24d6uO&f#8%x1HMVD(Z%r%)Se@KQ z<^CEwf+Y#kNtuZW`{!jMVW}Rke>Xxcwu9XbAp^<}vH4>@Tv`>ftm3y>FONlF#}U1w zrM)E;F~L3y7xor=(E^1p?@==uyOvmS@$8&}{)!z@afG!Jv3&>+X!T}73tKqJj>i&4 zy>3Or0KKh6uQ&AuYsMG00SQ%u&S1(^-6P-u>EMmMNfmkuo79AwqMDg7f3W%VBk<~H z4WJ~hn-y(5yHJ_P@2FGKwvY zL<@|bNixs|Qh6*A(V_@Pe-%VABN>DWUjdVb;}mz40Q}0z#g{IF-ZXK3cUjtC!%MEpz(OeILq{aM~|9Dd)f(> zfw8m{DXc69VCl47zdV_edrunGyX@-moJL=zD`o!4EKe^~AYT@DxJ>{Oo2 z>%Y4VNxo9y9SUCswARO3+B0$&)3gG|oaQW^jW$@$W#P#c7AyKS%es@MPoK`z$Bcx`h#HV&HDmfQtBckC8Y{`$VUeo9 zrwN%#&(d=${gwWv(j)Y!O24N+sPs5Jq0$9(p-SJOZ7Ow8r%IRd)!6u$s#aNajY=2O zB`R$v)c@aC`3L+%m3Q(kg|C&DAE|sDU$62Fd_8K&FG2eZe_?i`$~W=NP$5%8gnZ5N z#U&_wRQ@sFg1FC|%?M&}fUbNi-=^|zzFp-z_)cUV=L$sOyHwu8KT-K^zDMPId9O70 zseC{0QuzUTlWEgQmZ-tZLLoRMKRzYc5YywqXv_?vST(g!G^j<}L1y4^jY%?_7OY5~ zv_Uf#Y(yRpf9h>Gl*8@88ELxqX{a%Jgj==wObn~Mk2_TEWNyA*y%<%jto(~2W&EMC(LVVc%G=&%Z$A7Q}lX8N(pKjojP{1{Bi&FiJ; z3DsMfJs4|rS{iKB;Max;`O*An9dPYP6Vcj(&DvHyf4EuKqd`-Pv`7gMYz>*s)AFO% zhk+3Zn$4PtMh{MLEc>SfTZ|YMn(aa8(Jp)0=qyR1b6Rp91`SI66AZ-JNRjm} z*;Ia0$i{tn)u!-UD*vAUpzA5h!_9EAEwOPuSiq*BT04t6(5i3>w#6hs<)Au88>rEjQ_Ft;uDoVrcYG< zl&@C#e|$R%>%%8|rYT2R_n=ZvO-lr$N}PG@AKxjjTh2=RlWFvqd;(`8C9`}S)VoeW z0p2ebdif=zkYyU~RAly&Zf&y>Yqh^3e^K;HrCm^2DZP`yoNhr-@;2#aZ|#Q^OznFO zGO`a*#>K+$0>`U_;F0XkbjGn<`+TK4l$<_dTc1E_^?EK;{Gdx;r)>Mmg;{T_9kp`K z6{A;6ev~bC{JgTzf+H1R#J8GRS`Og^2)!>2?I4uFD|2GM$GIK$z_VCoSre|X%$ zUW4Fkq`?t-au#WS>bezdMR2bi(tJ-0o%1(lB2@#4Fw z$!xYTEqjU0VW@gW(nz`>SsXJKDe*jZ`u=6EceFm;LZ z-jzZ-$|Iy67Y^ObYn9b7ZqH4@Fo$9Ix<%f?(LOR{1fE-O3t1?(QH?k2e;~=0>#t?@ zrPfd&yq}dq@ujIc8KP+o0PJx`zJbIRL!fK97L7$w=Z0-%M-(_*y;%7@E{+u8GjY&! z&!n_!Arl1+P97`dGmeeCjJ((TdUmAq9f#~UtY<2DUnZkINd{HcrP#t_3Y30VYm#|a zrtTp#T#SRw$~Oa(`7QO{fBUqtM;FNLSE>TDK8BAf52P;b0*AfrkQlbt;wxi@UJ=$K@Bx57AgZ^S$=ANlNGBr&f9A4p9=(w*_T6}( z2S)ua%t|wL?R6`7IJ|o5!!favrxiz)P7~-HDj*^c1?W6FpP0Udw=DWL<;Z;no^#~# z!s@rvMOJ??U4niXXfLJjqWvD;&IboK`bmYIlwH_G{<@q2L+PnbQuooo!lHeo6c+Cz zZ(+$k8noBi;WD(Nf5?k=B31@zI2{KWCeb*`$J1oG95aPBPr8DxB(k1FCbphLsx0eC zra|)QmYmD&f8Ek@E~2aH8c5`!`SgAI z0l4^SHvJG*a$#*D?W7+;v(eD=I=UWI6KM?HfG02Ah}CYaya{XYJ#Xv7=VHu{nG148 z?x(=YE*e!=)JdbOU31+-htNa5GEc5M>joNA67Y1;n7Qs;_x0WH7Y979TqrqqclX=H z9W<^CT8^*lf23fU;+pHr^#!~KZ>H%(sXO4!_09U`ewt909mwvWiS8R|KtLHXy@QUc z4Ja}+sdk%>cXvM@P&z1I%;K`lvW$kJZG_lOG?Yms?!?m9PrwM6>jhd(@*Gbm~|0$y$4TT^o!_T+6y<`2Rq_< zQ|Nw$9$J3MEK z`(Y}me{&Vr?5C;wsqkLR6d{$|fT`lXQ?3J4l10Fpz;ZuLdlE#YeTZaY`n{G6V)V%{ zkHni7kvbT08bm}C!ZZsI1t%dkS0Oq#Auh$Jvuz2}25hwO#@5q*@W=v}O>}@BgaJ>2 z+qy98riU=ET4t8HhcPEc8%(Z46jbQos6#Xfe`f1tmPeq2ZI&0Xr36bw$rDswSlmf7 z%G@OqYcqGzEWmJ9ZO&}PQn09|&W(XNHFchnnmTX5Eee-;?xVSa;(5^e_`PYU6TOal;yKf{w`lZv!8D(EpQ zf8)uML|>Nm^m8jp@3V3ue+Gt`dOl81q}`uop>stS%|}p`NtRi#lNO>|SPk80m556Z z&h@zFdUL(Go||bxz@6)zS*A!3ov@SC;(&617G+WGHZNl9&Emc;-VOe@!|ZoJ**j?@ zP(A|)pAT#=!Siy6m~!z9#Gyon0?OI+e;}+ot1X6J@PO{MByTG zbt5M!skk_((9`&3m}s29-IbmI@iSI-{007=rRVHZ00#70qCbXH;A=a{y|;_<>WXqs z?4-pjxw?y%)OjDK@;X<}Quscn0-gr|meq99Np@OZjg}lE7BM)~jJdZwH-HSLS+y)hzn@O+ zpgI}YARY=L^($Sp5gfmsb6N+TE?`90L1%Q(roGT67h!b~t+V>8s5S}34KxC62dv!* z`yIeR_#h}A0t_FfGMHuwqM;V?f3OLV+X9H42h>~uBV7c~Tms)*f#<8}X@K?_x)uh! z3Ff<%o(J^{mPcCv*IFDd&(klh5X{H;i`cE1#?r3K{MVYrbgvx`)TuiRNp}jRYf^^2Q_Bh zLLT=X*Pe8I=UC#t1kqoHd0zqCU$u-e!sd`vL#09VmKC!ivX79YM~Vbl@~@WUuKQsK z$$ImOtT3B~u4$!f(b!^~e|8fJEkG8Joe4yCl3Py7UF31?+2%qBz6H`*Jt9rC;`=pN z{&kY;+2K$uAKMpVvtqo@q(7%4FdtNZq(4E4K`2P%_QO1^x<0AE zKyrOfgB1D;kNp%(vgBV!$rJxYY%Y@~2Sr#MvP# zRVdPpw5nv_TxKw=&_{$?;lH0!c2+mM?n#qaAu3bd@SLa5e@bkTI!D$)jF0J)s*6fcz}3xlUrU3EORVy(eRub}0Or}qPOUxXp;eKxo4nX?DEnv(51=5c zG>Hdhoc#G|OXS1OcUhLmr~koXa`KP2$|M&cn+MC^mb8RQS%;)F+INU@xku@lR(@W zvrt-`0u66&84(KK@|SZX0xm5R^zI@*-N56#Pza8 z`qokiicko)(BebiCdrUYTzA7{qxi2B3_>6J1Nx&%&rCuwRtSBVGw1f5@0-K?`u*c4 zfPHMtqlgzJcvv&uOJiR7c;ll&@Y`yTe^-6NLZc_nMXa*;NG0<9q;#k>!OOd9u=$pM zu-?dYC+=v`PGo$cMZYg~{6*y5`d}c>nu*km^FF9l$6Np(b3WDy z`~R2S(!BrRsI@3IG5I2mk;8K>!^}*y0uk003JK001VF5fT=Y4_ytCUkHC`V;ff$J!4B6SsurZ zVkfm@7sWBHEZG(bG(g-2yfsm4*}+?J($*bY6L}JOq>e_34P_~imVGHuD3r28*B*CUi}$dH#| zLxm;V1z8kTJRN^Q1UcEUMJk2i$Xt#<#ZB41CBvqQtq6|c6A^q;{)^+8Fg_K*r}3Ex zbbMB%XH|So=FdlP5?_$vwu9X34S5)v|wM7Ayr?+OiCLBCnT9MoGbm zi*sX>(^D&p^HXyxmu53lEAtC;>6wcPqSM#)n|dm*Te;Lc4OqER1#J@rtK{gGv!v(C zhJquP=Vl+7npmivI+C;XY~ENb8TO^ZhG=+Z%tGp6GjGsD=t0vmoeK(@$>jg1(wJ1YgK6>9#3re>32$n`GTTU9fX04=Q!b){8~MPF>cW^)Y(2 zK~0-LN8|gU1+6`2IQ!$V5^rSdF>j`~*UVhm)u zs+WuzT>=@-(yS-8+Jyq$u)UQke{khXSInY<+4z53v-d9iY>;`iZ09fOrFBY-p(owf z0HxvKwhg0H(sRb7nKMd`f<8~FWUQ5K)7eU8_Wn)%;Odqm)!B4)T!BI#yY^U}+FUb= zetbeD7lH`$j=pvyqZj=`X}67y!cAjp(=n`)8}@+ZMoVFIlr&@LSArMAe%}+za8iqN z=|g`)AmLrK^R=Sh)u!>K7s)Ip)FnLfKw3WRu0eudGJo zgoaT(sNusnui}RqCh)R`$MJ-Qk7HIt8q>Vndo64D5nj=-iZ$NygDl3&Wqxc)kRVw3rjMW!2OR=(b!z$b&-;TO7v#ZyQHD}+}ykFw?zr*{> z!|}m`1$yj2;~RHtt~1`S&<`q$|0FL^R#w6AJG%CMiAfW43cEg>KG2gJ7+Uh~5Zjo? z(O-BR#u|3({hhxN!rnJP+Z!4MC;xv>EArYz+I{lY$mPu8o*&xF!qO1Db{2>aN<#~k zi&@>FxnTV2xG)N3eY8+K?d^2M(+x9|Xw=v1I}7V};g&Q&*U?r!@+6-%HfOJi$p+l% ze@m&ny4yvM$J32*rRV!qU_4#c^Q8m!ys{k~yt2P?w@Qw&;RW%sU0|x5twVo^Ea4Qt zlFssrtQp;S0Oz3KgIqOXkn0caStt2p6QmsG9(y9khq!t_XN7YxQHAoFt9pTBgfq~G z0Pe*{C~2M&K8i8UVqn}i@Gvz+HzEcS$vbGOTRB2n;CEGkG+WT`S~~7&`<6r!T0&w1 zlfKRW5=rHJJCUrQxr#t0F;ss=a3(RFtRi$iumg2j{t8#ovV+KS6|G!p6|_ZIiSA%`sEW?*nmauRag5WIL9`=*6O8HvhOmiY z*R@L?>6&Y|F~#t(R`3iiG8aueb(31>7?u;T`1+htJN#btbq_^pi39OilUH01>>y55Y`*pFbzW&arE z5R_GwI8E}T`>e0?q?BG~GJ3j#froluMliXZZ0@b#z1!|>5l&Ipvqzb=X`*Bp{aKew z%sX2{>%_8)rc&byt`f<|{TJH!wI$yZKJK$TDK>i;r~5KPlA3>k3w;D1+8*i)JXOK{ zb@b!(81ykn|1^5oL7$@Zp`NXt8iO7@i4|f5(S@hnO44|_giEu_r3K2r5mliJ9e%s` zbY7qt3EX5dI#@yCC4>{NqiH)CO}eWNxf{`;yBMxwWLvW5msK>ya&l|yeY=<9%$o;@ zKTgmmNa9JRYK0<2r0==ilQrU#$kq}?E=Rifzu^|?HKtt3l<{)lc1?2ldRzyf5leoP7_fO{!UvsWm}+BLA)bYgtpKNA|Qwsl#3J! zK}qo6vaEHX?2_#wzJkx;3t*x_B{BXp@lkvRW1O>FpjcoFA@R>Sb6uPVR1-_MfMe)A zbO@mr=|~kqQ939^P!v#*fHWzBLAu09l@3d9(nUJbyL16*N)3b(iXb4^fJ=Rmckg|d zH+%N%KQrGyJ2SigIXg2uzulTYawc`==g*O;C!kL$$)hhc*u`|oqI7h0xY@5ud~^Th zKF1t?i3}D9qmd8cC%nR=+Q}Q;hk~(&m~YnJjpSp+REMM*uIT#|WD6v`Ok$CqoU(n+ zU$XHv!R6y`w9m(L!|QLBHQgHw(AN(G!`CTxJrz{rRVQVurZa zh)88WNrm&8CQf*FeUPCgwZy*G>Aot2*ACW{<`aniikt=nK(XSj2c6&)@&3OFw%{i zwk$gH>Qf$4A6|;B$I5r1oz%=LC4Jp*v{5ATv&gV@@n%_k33A}4j zp|R7@SR(5ESz^`E=d*@aiP`7Zd zZ>dU`QK|I`-0BjbwYu$q;#^|nX%E~~>adJU9 zOS|x$blf_Ro84_AMUt1{+^%05W_#B=Y%$vX&IHQ6=C6=}d+91g6i_AWiR=6%*9)!^AV-pcXuuBa@cU}YVsCm?;2hgCk>$ar!sQyGprJ=&xIA-%b5NFy$<$Hmch@Ms%^ z1o5+)J)p*smp}FAV;Y2^M8JDhl&n+oWo~lkz{LI!(U_y3HZh>)WNF zRjeUZ{@CJtk)$S*iO=Q}Iu(;nvJ-OyY=r^Zwa}(S-e2(u=pJJT8!*2+MH}r?LY173 zv5LLBc^}>-gfM+FInea%p4h#9y5T9=+NK=y5Yu}6c7{QS*%&8kTcWZ9%owh|LODK^TW0RL6z4LoA3efCjBR9#kaPJ_ ztB{H+3aBV7DK^t(b{V`P(r7T4aP>F!LU%`nIU~14=(R)7XC#I^jr3lDNx=kz9u??) z7)_n7i9?UPaQXvOBqY+*X|{esd$?~^P|CSIvE_$KXDQ&si&+it2)Iu8j8|ijJ^8a z+byH+aLtTjHMGeN>0feP(@bNWMcjwOaXXfP%4-1<@YeK!e>HBDg8S;q51WZkG<0xh zn{Nm8nc}HlO&qE6;$eugH{s)(1@R{OpV^|Oag-M2e{p>KnZQ=!$TlIvNMOW5%~Dis z;*q}Ouc&|ZHp;Sf))iwPOH0}7hp6mV^(Ce$I#R!CGOxDbC^6mo80wozmWaGDly>9Y zqo&;!RE@D;f#RoC3)-EXtAbq|XJk8^ooD>6KjbZG3%&`f>9bMcC-_&0bl&5eav?PC zZL7Z}2uHQ^+9=*8=)7b9Rn~_J*V@o$W9(`|`^##wSN_3g14{S0wp;5(o?Jrez^VYh<{v z*Ize%rS)ySZ}0aebM#CGz5F+|Juvcdf}tW>VU3-r$N3U-hJ?r1cXu+*(FV20)JFCG zNurX_KK?O%`?%~vAFT#*BCe(llQ2t#h}ocs(Sx^SD_!?w0>t{yE>))_w1dfr*QLk^ z@uS)fz$#e-g*83$Vwhk*n|lPzI1`hi3F#TM^mX3((CwnFF)1$zpx-+x6nim@|_J^ia3dq{0wn zTBP-zl&Za?>M+a0HHQp&6OAM;<`65 zQk%DD3bdYD+FebikNJa$x)cSqv!|VdJ9RggS20CjBO+m8-(-{t>EfuwVx%FeY&aa zebWIeg|WSAwa#?9`S{(s_h)T1W@ahAt?7-L%j_+sUkZR^sut&!RXOo9qOhEXU+F?3 zg)S2crxOY?E*Y{?O}hlF>FzY@?X)PJz9REh18 zb2q!xA%xMPtxkUL0Uh-E2H9-d{wTqy${;UzC{J+p_;YuDKX6U(*H#FILsMCK8>v#flrp&jd@$lLN_ zOUkS}%aM`S7K_dUG}hIAUvm6O-t%=qcawi2qTHn``t`YiFE$ z7W=8>DbEu9rGi_m{VClE@7WisP$+T_@yhZqSHwmFoh7$EH@%;ilv(!9 zQoH(2UyZ{J=JLnrkWQD;9q#cAN3jA^nv(I7tE;JSKi;1d;lxH+2;;;j)>XUtc6=G! z_wGpyg*H~usg-;`Q2JH_O=C-xF=zsGk)qN@4#zi|T7x(Dn;ciMx2<--8K^kLXy&i) zpUN_Qc5Ze(>81YKt4uMO$hzU9q;O`ez^X>0{L~z7$kD%i(0NhLZYCA)#4<7}DOn8jWEFV)P{*)qNg`e(x&7n|@3e;YEJct~8st5q zD_Ba>)mfUm~#{k+Q*eZfq4kqvE>`Q`Kn+6n1B*#j#9=qr8kHqVvo$-nVL0 z)AEaQDo=wOAhQ-LYR*1Y6jj@on5{Q&erPId7^(lx=ZH9T@Fri?t~}&f=@{Tg51PVF zVW)(~XGEguT0INtZz`3ZKS=e{b94Mjd6xk}LuT$1&BxSSUt~)Yc00D)@!je3QhNJQ zewFJL2cxa3wQrP>fhfVcoMh)&12>SS(-fqIfOY}%Jc#~R+2!XQLU;7DLu5y?&8@&U z#jPi}n*RzxBBM+Pq9L5L6AFSjn|oDTWIq_6csT~E>G*y)z`!>KHB=wY&gePcU^NVX z_wr>MSH}o(%)_FU`+G->d)tIiyVS1=?*uA%2fb03YO^LMXk$>@TD}(gO9IT(%<`F@ z9cdo7Cf8^NC@ol?i%B=6PTZw+i+KO0K^8Ly4{nlPIG&=veN8>C{}VR0&?)Slss_e; zE&U9_G61gyT&dm3M7nJU`V57NUoRPbSLp3#{&nY!M4&raUf?wNCT`(C%|93wE>hm! zxdPM+QFs|;M7X0~DS5TOetXZK({st>nB^pZskHE8Q#d=F=R?iZAd=GR~HM10HK z^)Fa_Sz;PiPm4+roR|m63C3|zd5qk1S_`uT$0P&t0U8W+1f@khVJ0;w@G<9*yd_0Y z8&S1KRtgj0BlGm}YDg^;9b-oG^uD*p4^N!baEv`l;Yef}6}VZg*tbtD@L!)(C)3w* z8S&ny=^HKhH%V5cfYM{+f?= zgZvH4gWWj))oUbU05+b9HOz{2e$Dw zxG=MS0X#DM8^lla6aT3#z+(5`=9nPP^A+vbf!A1Ju&o^+=?VkBV3omEj(AZRxHT^f zZhi{*&l`f-kigKq3HT8b;9F1x14sa|U;*av#9vr}nFRyzh%b=y76!DSn1Kh2__F-Z zqfYCzz}W&d5ccxF_w9Lpo_Vw=2c`(Zi@d;D7ztppgnvZ;on*Ptmc9Q4OP4gjnPKNT z(NT2gPvF8p@q$il#5w4R(*$qEoQsP%S=hhdjI \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -105,79 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/java/feign/feign10x/gradlew.bat b/samples/client/petstore/java/feign/feign10x/gradlew.bat index 9618d8d9607..107acd32c4e 100644 --- a/samples/client/petstore/java/feign/feign10x/gradlew.bat +++ b/samples/client/petstore/java/feign/feign10x/gradlew.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/samples/client/petstore/java/feign/gradlew b/samples/client/petstore/java/feign/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/google-api-client/build.gradle b/samples/client/petstore/java/google-api-client/build.gradle index 39ed02a1cd4..6b3f54f8166 100644 --- a/samples/client/petstore/java/google-api-client/build.gradle +++ b/samples/client/petstore/java/google-api-client/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-google-api-client' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-google-api-client' + from components.java + } } } diff --git a/samples/client/petstore/java/google-api-client/gradlew b/samples/client/petstore/java/google-api-client/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/native-async/build.gradle b/samples/client/petstore/java/native-async/build.gradle index 6bebeffcdd4..916539c686b 100644 --- a/samples/client/petstore/java/native-async/build.gradle +++ b/samples/client/petstore/java/native-async/build.gradle @@ -6,18 +6,16 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 @@ -33,9 +31,12 @@ javadoc { options.encoding = 'UTF-8' } -install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-native' +publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-native' + from components.java + } } } diff --git a/samples/client/petstore/java/native-async/gradlew b/samples/client/petstore/java/native-async/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/native/build.gradle b/samples/client/petstore/java/native/build.gradle index 6bebeffcdd4..916539c686b 100644 --- a/samples/client/petstore/java/native/build.gradle +++ b/samples/client/petstore/java/native/build.gradle @@ -6,18 +6,16 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 @@ -33,9 +31,12 @@ javadoc { options.encoding = 'UTF-8' } -install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-native' +publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-native' + from components.java + } } } diff --git a/samples/client/petstore/java/native/gradlew b/samples/client/petstore/java/native/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/rest-assured-jackson/build.gradle b/samples/client/petstore/java/rest-assured-jackson/build.gradle index 126452afdc1..e99cf39b119 100644 --- a/samples/client/petstore/java/rest-assured-jackson/build.gradle +++ b/samples/client/petstore/java/rest-assured-jackson/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-rest-assured-jackson' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-rest-assured-jackson' + from components.java + } } } diff --git a/samples/client/petstore/java/rest-assured-jackson/gradlew b/samples/client/petstore/java/rest-assured-jackson/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/rest-assured/build.gradle b/samples/client/petstore/java/rest-assured/build.gradle index 928f5dd4918..2c13b6f32cb 100644 --- a/samples/client/petstore/java/rest-assured/build.gradle +++ b/samples/client/petstore/java/rest-assured/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-rest-assured' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-rest-assured' + from components.java + } } } diff --git a/samples/client/petstore/java/rest-assured/gradlew b/samples/client/petstore/java/rest-assured/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/resteasy/build.gradle b/samples/client/petstore/java/resteasy/build.gradle index 49838b21fe2..c794b8613ba 100644 --- a/samples/client/petstore/java/resteasy/build.gradle +++ b/samples/client/petstore/java/resteasy/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,13 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' + sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-resteasy' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-resteasy' + from components.java + } } } diff --git a/samples/client/petstore/java/resteasy/gradlew b/samples/client/petstore/java/resteasy/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/resttemplate-withXml/build.gradle b/samples/client/petstore/java/resttemplate-withXml/build.gradle index 7e3a6d9dd83..f07930b7b5d 100644 --- a/samples/client/petstore/java/resttemplate-withXml/build.gradle +++ b/samples/client/petstore/java/resttemplate-withXml/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-resttemplate-withxml' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-resttemplate-withxml' + from components.java + } } } diff --git a/samples/client/petstore/java/resttemplate-withXml/gradlew b/samples/client/petstore/java/resttemplate-withXml/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/resttemplate/build.gradle b/samples/client/petstore/java/resttemplate/build.gradle index d5e355df064..a5719c67de5 100644 --- a/samples/client/petstore/java/resttemplate/build.gradle +++ b/samples/client/petstore/java/resttemplate/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-resttemplate' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-resttemplate' + from components.java + } } } diff --git a/samples/client/petstore/java/resttemplate/gradlew b/samples/client/petstore/java/resttemplate/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/retrofit2-play26/build.gradle b/samples/client/petstore/java/retrofit2-play26/build.gradle index eb0580bd8c2..a34a4271847 100644 --- a/samples/client/petstore/java/retrofit2-play26/build.gradle +++ b/samples/client/petstore/java/retrofit2-play26/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-java-client-retrofit2-play26' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-java-client-retrofit2-play26' + from components.java + } } } diff --git a/samples/client/petstore/java/retrofit2-play26/gradlew b/samples/client/petstore/java/retrofit2-play26/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/retrofit2/build.gradle b/samples/client/petstore/java/retrofit2/build.gradle index 4dafb81ae67..8a5e2ab91c4 100644 --- a/samples/client/petstore/java/retrofit2/build.gradle +++ b/samples/client/petstore/java/retrofit2/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-retrofit2' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-retrofit2' + from components.java + } } } diff --git a/samples/client/petstore/java/retrofit2/gradlew b/samples/client/petstore/java/retrofit2/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/retrofit2rx2/build.gradle b/samples/client/petstore/java/retrofit2rx2/build.gradle index 4c801b8e23d..3fe39eddae0 100644 --- a/samples/client/petstore/java/retrofit2rx2/build.gradle +++ b/samples/client/petstore/java/retrofit2rx2/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-retrofit2-rx2' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-retrofit2-rx2' + from components.java + } } } diff --git a/samples/client/petstore/java/retrofit2rx2/gradlew b/samples/client/petstore/java/retrofit2rx2/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/retrofit2rx3/build.gradle b/samples/client/petstore/java/retrofit2rx3/build.gradle index 96760ecfecc..c1ed0c63156 100644 --- a/samples/client/petstore/java/retrofit2rx3/build.gradle +++ b/samples/client/petstore/java/retrofit2rx3/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-retrofit2-rx3' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-retrofit2-rx3' + from components.java + } } } diff --git a/samples/client/petstore/java/retrofit2rx3/gradlew b/samples/client/petstore/java/retrofit2rx3/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/vertx-no-nullable/build.gradle b/samples/client/petstore/java/vertx-no-nullable/build.gradle index ef71d28b690..220dccd2c31 100644 --- a/samples/client/petstore/java/vertx-no-nullable/build.gradle +++ b/samples/client/petstore/java/vertx-no-nullable/build.gradle @@ -5,19 +5,21 @@ group = 'org.openapitools' version = '1.0.0' repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-vertx-no-nullable' +publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-vertx-no-nullable' + from components.java + } } } diff --git a/samples/client/petstore/java/vertx-no-nullable/gradlew b/samples/client/petstore/java/vertx-no-nullable/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/vertx/build.gradle b/samples/client/petstore/java/vertx/build.gradle index 7d499745c83..c067ccdc2ad 100644 --- a/samples/client/petstore/java/vertx/build.gradle +++ b/samples/client/petstore/java/vertx/build.gradle @@ -5,19 +5,21 @@ group = 'org.openapitools' version = '1.0.0' repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-vertx' +publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-vertx' + from components.java + } } } diff --git a/samples/client/petstore/java/vertx/gradlew b/samples/client/petstore/java/vertx/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/webclient-nulable-arrays/build.gradle b/samples/client/petstore/java/webclient-nulable-arrays/build.gradle index 686f85f5ace..6cbf60d744c 100644 --- a/samples/client/petstore/java/webclient-nulable-arrays/build.gradle +++ b/samples/client/petstore/java/webclient-nulable-arrays/build.gradle @@ -6,8 +6,7 @@ version = 'v1' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,8 +15,7 @@ buildscript { } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } if(hasProperty('target') && target == 'android') { @@ -78,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-webclient-nullable-arrays' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-webclient-nullable-arrays' + from components.java + } } } diff --git a/samples/client/petstore/java/webclient-nulable-arrays/gradlew b/samples/client/petstore/java/webclient-nulable-arrays/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/java/webclient/build.gradle b/samples/client/petstore/java/webclient/build.gradle index eb34d7a99cc..4d1f7d9b7f4 100644 --- a/samples/client/petstore/java/webclient/build.gradle +++ b/samples/client/petstore/java/webclient/build.gradle @@ -6,8 +6,7 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' @@ -16,8 +15,7 @@ buildscript { } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } if(hasProperty('target') && target == 'android') { @@ -78,14 +76,17 @@ if(hasProperty('target') && target == 'android') { } else { apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-webclient' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-webclient' + from components.java + } } } diff --git a/samples/client/petstore/java/webclient/gradlew b/samples/client/petstore/java/webclient/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/scala-httpclient-deprecated/build.gradle b/samples/client/petstore/scala-httpclient-deprecated/build.gradle index 90b3353edf6..db9df898b64 100644 --- a/samples/client/petstore/scala-httpclient-deprecated/build.gradle +++ b/samples/client/petstore/scala-httpclient-deprecated/build.gradle @@ -6,7 +6,7 @@ version = '1.0.0' buildscript { repositories { - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -15,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -77,14 +77,17 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'scala' apply plugin: 'java' - apply plugin: 'maven' + apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - install { - repositories.mavenInstaller { - pom.artifactId = 'scala-legacy-petstore' + publishing { + publications { + maven(MavenPublication) { + artifactId = 'scala-legacy-petstore' + from components.java + } } } diff --git a/samples/client/petstore/scala-httpclient-deprecated/gradlew b/samples/client/petstore/scala-httpclient-deprecated/gradlew old mode 100644 new mode 100755 diff --git a/samples/client/petstore/scala-httpclient/build.gradle b/samples/client/petstore/scala-httpclient/build.gradle index bdfd125549b..6df69a6b5b7 100644 --- a/samples/client/petstore/scala-httpclient/build.gradle +++ b/samples/client/petstore/scala-httpclient/build.gradle @@ -6,7 +6,7 @@ version = '1.0.0' buildscript { repositories { - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.+' @@ -15,7 +15,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } @@ -23,7 +23,7 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' - + android { compileSdkVersion 23 buildToolsVersion '23.0.2' @@ -35,7 +35,7 @@ if(hasProperty('target') && target == 'android') { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } - + // Rename the aar correctly libraryVariants.all { variant -> variant.outputs.each { output -> @@ -51,7 +51,7 @@ if(hasProperty('target') && target == 'android') { provided 'javax.annotation:jsr250-api:1.0' } } - + afterEvaluate { android.libraryVariants.all { variant -> def task = project.tasks.create "jar${variant.name.capitalize()}", Jar @@ -63,12 +63,12 @@ if(hasProperty('target') && target == 'android') { artifacts.add('archives', task); } } - + task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } - + artifacts { archives sourcesJar } @@ -77,17 +77,20 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'scala' apply plugin: 'java' - apply plugin: 'maven' - + apply plugin: 'maven-publish' + sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 - - install { - repositories.mavenInstaller { - pom.artifactId = 'openapi-scala-client' + + publishing { + publications { + maven(MavenPublication) { + artifactId = 'openapi-scala-client' + from components.java + } } } - + task execute(type:JavaExec) { main = System.getProperty('mainClass') classpath = sourceSets.main.runtimeClasspath @@ -113,15 +116,15 @@ repositories { } dependencies { - compile "com.fasterxml.jackson.module:jackson-module-scala_2.10:$jackson_version" - compile "com.sun.jersey:jersey-client:$jersey_version" - compile "com.sun.jersey.contribs:jersey-multipart:$jersey_version" - compile "org.jfarcand:jersey-ahc-client:$jersey_async_version" - compile "org.scala-lang:scala-library:$scala_version" - compile "io.swagger:swagger-core:$swagger_core_version" - testCompile "org.scalatest:scalatest_2.10:$scala_test_version" - testCompile "junit:junit:$junit_version" - compile "joda-time:joda-time:$jodatime_version" - compile "org.joda:joda-convert:$joda_version" - compile "com.wordnik.swagger:swagger-async-httpclient_2.10:$swagger_async_httpclient_version" + compileOnly "com.fasterxml.jackson.module:jackson-module-scala_2.10:$jackson_version" + compileOnly "com.sun.jersey:jersey-client:$jersey_version" + compileOnly "com.sun.jersey.contribs:jersey-multipart:$jersey_version" + compileOnly "org.jfarcand:jersey-ahc-client:$jersey_async_version" + compileOnly "org.scala-lang:scala-library:$scala_version" + compileOnly "io.swagger:swagger-core:$swagger_core_version" + testCompileOnly "org.scalatest:scalatest_2.10:$scala_test_version" + testCompileOnly "junit:junit:$junit_version" + compileOnly "joda-time:joda-time:$jodatime_version" + compileOnly "org.joda:joda-convert:$joda_version" + compileOnly "com.wordnik.swagger:swagger-async-httpclient_2.10:$swagger_async_httpclient_version" } diff --git a/samples/client/petstore/scala-httpclient/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/scala-httpclient/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 26684 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 K^lt7S+W!H~Tue9s delta 22520 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
  • usVSoVjI>$Q-YBnHldEW6 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 D;yMN8 diff --git a/samples/client/petstore/scala-httpclient/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/scala-httpclient/gradle/wrapper/gradle-wrapper.properties index e496c054f69..ffed3a254e9 100644 --- a/samples/client/petstore/scala-httpclient/gradle/wrapper/gradle-wrapper.properties +++ b/samples/client/petstore/scala-httpclient/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/client/petstore/scala-httpclient/gradlew b/samples/client/petstore/scala-httpclient/gradlew index af6708ff229..1b6c787337f 100755 --- a/samples/client/petstore/scala-httpclient/gradlew +++ b/samples/client/petstore/scala-httpclient/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done fi +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/scala-httpclient/gradlew.bat b/samples/client/petstore/scala-httpclient/gradlew.bat index f9553162f12..107acd32c4e 100644 --- a/samples/client/petstore/scala-httpclient/gradlew.bat +++ b/samples/client/petstore/scala-httpclient/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/samples/openapi3/client/petstore/java/native/build.gradle b/samples/openapi3/client/petstore/java/native/build.gradle index 2979e384fef..a5b272d239d 100644 --- a/samples/openapi3/client/petstore/java/native/build.gradle +++ b/samples/openapi3/client/petstore/java/native/build.gradle @@ -6,18 +6,16 @@ version = '1.0.0' buildscript { repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } } repositories { - maven { url "https://repo1.maven.org/maven2" } - jcenter() + mavenCentral() } apply plugin: 'java' -apply plugin: 'maven' +apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 @@ -33,9 +31,12 @@ javadoc { options.encoding = 'UTF-8' } -install { - repositories.mavenInstaller { - pom.artifactId = 'petstore-openapi3-native' +publishing { + publications { + maven(MavenPublication) { + artifactId = 'petstore-openapi3-native' + from components.java + } } } diff --git a/samples/openapi3/client/petstore/java/native/gradle/wrapper/gradle-wrapper.jar b/samples/openapi3/client/petstore/java/native/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 18435 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 B8dv}T delta 17845 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 X49Luk)baa85H9$5YCsTPT`SVRWMtMW diff --git a/samples/openapi3/client/petstore/java/native/gradle/wrapper/gradle-wrapper.properties b/samples/openapi3/client/petstore/java/native/gradle/wrapper/gradle-wrapper.properties index 4d9ca164914..ffed3a254e9 100644 --- a/samples/openapi3/client/petstore/java/native/gradle/wrapper/gradle-wrapper.properties +++ b/samples/openapi3/client/petstore/java/native/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/openapi3/client/petstore/java/native/gradlew b/samples/openapi3/client/petstore/java/native/gradlew old mode 100644 new mode 100755 index 4f906e0c811..1b6c787337f --- a/samples/openapi3/client/petstore/java/native/gradlew +++ b/samples/openapi3/client/petstore/java/native/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/samples/openapi3/client/petstore/kotlin-multiplatform/build.gradle b/samples/openapi3/client/petstore/kotlin-multiplatform/build.gradle index 47045bb577e..6e41c14fece 100644 --- a/samples/openapi3/client/petstore/kotlin-multiplatform/build.gradle +++ b/samples/openapi3/client/petstore/kotlin-multiplatform/build.gradle @@ -14,7 +14,7 @@ ext { buildscript { repositories { - jcenter() + mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" // $kotlin_version @@ -23,7 +23,7 @@ buildscript { } repositories { - jcenter() + mavenCentral() } kotlin { diff --git a/samples/openapi3/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.jar b/samples/openapi3/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.jar index 2c6137b87896c8f70315ae454e00a969ef5f6019..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 53639 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 F{{tUq7iIte diff --git a/samples/openapi3/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.properties b/samples/openapi3/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.properties index ce3ca77db54..ffed3a254e9 100644 --- a/samples/openapi3/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.properties +++ b/samples/openapi3/client/petstore/kotlin-multiplatform/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue May 17 23:08:05 CST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip diff --git a/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew b/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew old mode 100644 new mode 100755 index 9d82f789151..1b6c787337f --- a/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew +++ b/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew @@ -1,74 +1,129 @@ -#!/usr/bin/env bash +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn ( ) { +warn () { echo "$*" -} +} >&2 -die ( ) { +die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -77,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -85,76 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew.bat b/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew.bat index 5f192121eb4..107acd32c4e 100644 --- a/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew.bat +++ b/samples/openapi3/client/petstore/kotlin-multiplatform/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -8,20 +24,23 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,34 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/samples/openapi3/server/petstore/kotlin-springboot-reactive/build.gradle.kts b/samples/openapi3/server/petstore/kotlin-springboot-reactive/build.gradle.kts index 682bfec8aa1..46cdd62a58f 100644 --- a/samples/openapi3/server/petstore/kotlin-springboot-reactive/build.gradle.kts +++ b/samples/openapi3/server/petstore/kotlin-springboot-reactive/build.gradle.kts @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "org.openapitools" version = "1.0.0" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { diff --git a/samples/openapi3/server/petstore/kotlin-springboot/build.gradle.kts b/samples/openapi3/server/petstore/kotlin-springboot/build.gradle.kts index 49fe9400f70..2b99799bd53 100644 --- a/samples/openapi3/server/petstore/kotlin-springboot/build.gradle.kts +++ b/samples/openapi3/server/petstore/kotlin-springboot/build.gradle.kts @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "org.openapitools" version = "1.0.0" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { diff --git a/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts b/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts index d0e767d84cd..ea7f93398da 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "org.openapitools" version = "1.0.0" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { diff --git a/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts b/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts index 49fe9400f70..2b99799bd53 100644 --- a/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot-modelMutable/build.gradle.kts @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "org.openapitools" version = "1.0.0" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { diff --git a/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts b/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts index 24ed63f61f8..2f35ba0681d 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "org.openapitools" version = "1.0.0" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { diff --git a/samples/server/petstore/kotlin-springboot/build.gradle.kts b/samples/server/petstore/kotlin-springboot/build.gradle.kts index d0e767d84cd..ea7f93398da 100644 --- a/samples/server/petstore/kotlin-springboot/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot/build.gradle.kts @@ -2,8 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.0.M3") @@ -14,8 +13,7 @@ group = "org.openapitools" version = "1.0.0" repositories { - jcenter() - maven { url = uri("https://repo1.maven.org/maven2") } + mavenCentral() } tasks.withType { From d75683aeaec4e882b6053a86567c6954fbbd6182 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 29 Oct 2021 12:36:40 +0800 Subject: [PATCH 16/25] [java][jersey2] update plugins in pom.xml (#10710) * update jersey2 plugin * remove jar --- .../Java/libraries/jersey2/pom.mustache | 42 ++++--------------- .../java/jersey2-java8-localdatetime/pom.xml | 21 ++++------ .../petstore/java/jersey2-java8/pom.xml | 21 ++++------ .../java/jersey2-java8/pom.xml | 32 +++++++------- .../jersey2-java8-special-characters/pom.xml | 21 ++++------ .../petstore/java/jersey2-java8/pom.xml | 21 ++++------ 6 files changed, 59 insertions(+), 99 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache index 50303b928e1..879e91df9f7 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -43,7 +43,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -63,7 +63,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -91,16 +91,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.6 + 3.2.0 - jar test-jar @@ -108,11 +106,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -145,14 +142,8 @@ maven-compiler-plugin 3.8.1 - {{#java8}} - 1.8 - 1.8 - {{/java8}} - {{^java8}} - 1.7 - 1.7 - {{/java8}} + 1.8 + 1.8 true 128m 512m @@ -165,7 +156,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -176,12 +167,7 @@ none - {{#java8}} - 1.8 - {{/java8}} - {{^java8}} - 1.7 - {{/java8}} + 1.8 http.response.details @@ -194,7 +180,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -305,13 +291,11 @@ ${jackson-version} {{/joda}} - {{#java8}} com.fasterxml.jackson.datatype jackson-datatype-jsr310 ${jackson-version} - {{/java8}} {{#threetenbp}} com.github.joschi.jackson @@ -319,14 +303,6 @@ ${threetenbp-version} {{/threetenbp}} - {{^java8}} - - - com.brsanthu - migbase64 - 2.2 - - {{/java8}} {{#hasHttpSignatureMethods}} org.tomitribe diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml b/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml index fe5cc8b2cce..385a5094213 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml @@ -36,7 +36,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -84,16 +84,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.6 + 3.2.0 - jar test-jar @@ -101,11 +99,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -138,8 +135,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 1.8 + 1.8 true 128m 512m @@ -152,7 +149,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -163,7 +160,7 @@ none - 1.8 + 1.8 http.response.details @@ -176,7 +173,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources diff --git a/samples/client/petstore/java/jersey2-java8/pom.xml b/samples/client/petstore/java/jersey2-java8/pom.xml index 114bc87e72c..3f2afa02ca1 100644 --- a/samples/client/petstore/java/jersey2-java8/pom.xml +++ b/samples/client/petstore/java/jersey2-java8/pom.xml @@ -36,7 +36,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -84,16 +84,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.6 + 3.2.0 - jar test-jar @@ -101,11 +99,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -138,8 +135,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 1.8 + 1.8 true 128m 512m @@ -152,7 +149,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -163,7 +160,7 @@ none - 1.8 + 1.8 http.response.details @@ -176,7 +173,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml index 008335f4466..bf885a5080c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml @@ -36,7 +36,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -84,16 +84,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.6 + 3.2.0 - jar test-jar @@ -101,11 +99,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -138,8 +135,8 @@ maven-compiler-plugin 3.8.1 - 1.7 - 1.7 + 1.8 + 1.8 true 128m 512m @@ -152,7 +149,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -163,7 +160,7 @@ none - 1.7 + 1.8 http.response.details @@ -176,7 +173,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -270,17 +267,16 @@ jackson-databind-nullable ${jackson-databind-nullable-version} + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-version} + com.github.joschi.jackson jackson-datatype-threetenbp ${threetenbp-version} - - - com.brsanthu - migbase64 - 2.2 - jakarta.annotation jakarta.annotation-api diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml index 359dda5143e..744e22b67e3 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml @@ -36,7 +36,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -84,16 +84,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.6 + 3.2.0 - jar test-jar @@ -101,11 +99,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -138,8 +135,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 1.8 + 1.8 true 128m 512m @@ -152,7 +149,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -163,7 +160,7 @@ none - 1.8 + 1.8 http.response.details @@ -176,7 +173,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml b/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml index 416ff72b7eb..89adddeb241 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml +++ b/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml @@ -36,7 +36,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -84,16 +84,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.6 + 3.2.0 - jar test-jar @@ -101,11 +99,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -138,8 +135,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 1.8 + 1.8 true 128m 512m @@ -152,7 +149,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -163,7 +160,7 @@ none - 1.8 + 1.8 http.response.details @@ -176,7 +173,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources From 2b2838325ce52ac4a9d03dcef59bc8f63276b17f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 29 Oct 2021 12:36:52 +0800 Subject: [PATCH 17/25] [java][okhttp-gson] update dependencies in pom.xml (#10709) * update okhttp-gson pom dependencies * update samples * remove jar --- .../Java/libraries/okhttp-gson/pom.mustache | 37 +++++++++---------- .../others/java/okhttp-gson-streaming/pom.xml | 31 +++++++--------- .../okhttp-gson-dynamicOperations/pom.xml | 33 ++++++++--------- .../java/okhttp-gson-parcelableModel/pom.xml | 31 +++++++--------- .../client/petstore/java/okhttp-gson/pom.xml | 31 +++++++--------- 5 files changed, 74 insertions(+), 89 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pom.mustache index 780b025dbc7..6cd8e351291 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pom.mustache @@ -57,7 +57,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -77,7 +77,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -104,16 +104,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.2 + 3.2.0 - jar test-jar @@ -121,11 +119,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -156,7 +153,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -179,7 +176,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -200,7 +197,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 3.0.1 sign-artifacts @@ -278,7 +275,7 @@ io.swagger.parser.v3 swagger-parser-v3 - 2.0.23 + 2.0.28 {{/dynamicOperations}} {{#useBeanValidation}} @@ -295,7 +292,7 @@ org.hibernate hibernate-validator - 5.4.1.Final + 5.4.3.Final jakarta.el @@ -335,19 +332,19 @@ org.mockito mockito-core - 3.11.2 + 3.12.4 test - {{#java8}}1.8{{/java8}}{{^java8}}1.7{{/java8}} + 1.8 ${java.version} ${java.version} 1.8.5 - 1.6.2 - 4.9.1 - 2.8.6 - 3.11 + 1.6.3 + 4.9.2 + 2.8.8 + 3.12.0 {{#openApiNullable}} 0.2.1 {{/openApiNullable}} @@ -362,9 +359,9 @@ 3.0.3 {{/performBeanValidation}} {{#useBeanValidation}} - 2.0.2 + 2.0.2 {{/useBeanValidation}} - 4.13.1 + 4.13.2 UTF-8 diff --git a/samples/client/others/java/okhttp-gson-streaming/pom.xml b/samples/client/others/java/okhttp-gson-streaming/pom.xml index 8c0abdf8e1e..243592e2799 100644 --- a/samples/client/others/java/okhttp-gson-streaming/pom.xml +++ b/samples/client/others/java/okhttp-gson-streaming/pom.xml @@ -50,7 +50,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -97,16 +97,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.2 + 3.2.0 - jar test-jar @@ -114,11 +112,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -149,7 +146,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -172,7 +169,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -193,7 +190,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 3.0.1 sign-artifacts @@ -272,23 +269,23 @@ org.mockito mockito-core - 3.11.2 + 3.12.4 test - 1.7 + 1.8 ${java.version} ${java.version} 1.8.5 - 1.6.2 - 4.9.1 - 2.8.6 - 3.11 + 1.6.3 + 4.9.2 + 2.8.8 + 3.12.0 0.2.1 1.5.0 1.3.5 - 4.13.1 + 4.13.2 UTF-8 diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/pom.xml b/samples/client/petstore/java/okhttp-gson-dynamicOperations/pom.xml index 169961f2e35..3ce94aa5dd4 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/pom.xml +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/pom.xml @@ -50,7 +50,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -97,16 +97,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.2 + 3.2.0 - jar test-jar @@ -114,11 +112,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -149,7 +146,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -172,7 +169,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -193,7 +190,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 3.0.1 sign-artifacts @@ -259,7 +256,7 @@ io.swagger.parser.v3 swagger-parser-v3 - 2.0.23 + 2.0.28 jakarta.annotation @@ -282,23 +279,23 @@ org.mockito mockito-core - 3.11.2 + 3.12.4 test - 1.7 + 1.8 ${java.version} ${java.version} 1.8.5 - 1.6.2 - 4.9.1 - 2.8.6 - 3.11 + 1.6.3 + 4.9.2 + 2.8.8 + 3.12.0 0.2.1 1.5.0 1.3.5 - 4.13.1 + 4.13.2 UTF-8 diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/pom.xml b/samples/client/petstore/java/okhttp-gson-parcelableModel/pom.xml index cbded0cff24..3235bef8854 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/pom.xml +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/pom.xml @@ -50,7 +50,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -97,16 +97,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.2 + 3.2.0 - jar test-jar @@ -114,11 +112,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -149,7 +146,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -172,7 +169,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -193,7 +190,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 3.0.1 sign-artifacts @@ -284,23 +281,23 @@ org.mockito mockito-core - 3.11.2 + 3.12.4 test - 1.7 + 1.8 ${java.version} ${java.version} 1.8.5 - 1.6.2 - 4.9.1 - 2.8.6 - 3.11 + 1.6.3 + 4.9.2 + 2.8.8 + 3.12.0 0.2.1 1.5.0 1.3.5 - 4.13.1 + 4.13.2 UTF-8 diff --git a/samples/client/petstore/java/okhttp-gson/pom.xml b/samples/client/petstore/java/okhttp-gson/pom.xml index 7406e439fd1..f3c9b191c95 100644 --- a/samples/client/petstore/java/okhttp-gson/pom.xml +++ b/samples/client/petstore/java/okhttp-gson/pom.xml @@ -50,7 +50,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M1 + 3.0.0 enforce-maven @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M4 + 3.0.0-M5 @@ -97,16 +97,14 @@ - org.apache.maven.plugins maven-jar-plugin - 2.2 + 3.2.0 - jar test-jar @@ -114,11 +112,10 @@ - org.codehaus.mojo build-helper-maven-plugin - 1.10 + 3.2.0 add_sources @@ -149,7 +146,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.3.1 attach-javadocs @@ -172,7 +169,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.0 attach-sources @@ -193,7 +190,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 3.0.1 sign-artifacts @@ -277,23 +274,23 @@ org.mockito mockito-core - 3.11.2 + 3.12.4 test - 1.7 + 1.8 ${java.version} ${java.version} 1.8.5 - 1.6.2 - 4.9.1 - 2.8.6 - 3.11 + 1.6.3 + 4.9.2 + 2.8.8 + 3.12.0 0.2.1 1.5.0 1.3.5 - 4.13.1 + 4.13.2 UTF-8 From 4cece10bae309aa19892945fcf87cbc4c139f075 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 29 Oct 2021 13:38:16 +0800 Subject: [PATCH 18/25] rebalance circleci tests (#10727) --- .circleci/config.yml | 18 ----------- CI/circle_parallel.sh | 29 +++++++++++++----- pom.xml | 70 +++++++++++++++++++++---------------------- 3 files changed, 57 insertions(+), 60 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b1c5957943e..b610ceeb2bb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -42,24 +42,6 @@ jobs: command: |- printf '127.0.0.1 petstore.swagger.io ' | sudo tee -a /etc/hosts - # Dependencies - # Install latest stable node for angular 6 - - run: - name: Install node@stable (for angular 6) - command: | - set +e - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash - export NVM_DIR="/opt/circleci/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" - #nvm install stable - # install v16 instead of the latest stable version - nvm install 16 - nvm alias default 16 - - # Each step uses the same `$BASH_ENV`, so need to modify it - echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV - echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV - - run: node --version # - run: docker pull openapitools/openapi-petstore # - run: docker run -d -e OPENAPI_BASE_PATH=/v3 -e DISABLE_API_KEY=1 -e DISABLE_OAUTH=1 -p 80:8080 openapitools/openapi-petstore - run: docker pull swaggerapi/petstore diff --git a/CI/circle_parallel.sh b/CI/circle_parallel.sh index 6e231909d61..697009699a3 100755 --- a/CI/circle_parallel.sh +++ b/CI/circle_parallel.sh @@ -40,6 +40,13 @@ elif [ "$NODE_INDEX" = "2" ]; then sudo apt-get -y build-dep libcurl4-gnutls-dev sudo apt-get -y install libcurl4-gnutls-dev + # Install golang version 1.14 + go version + sudo mkdir /usr/local/go1.14 + wget -c https://dl.google.com/go/go1.14.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local/go1.14 + export PATH="/usr/local/go1.14/go/bin:$PATH" + go version + # run integration tests mvn --no-snapshot-updates --quiet verify -Psamples.misc -Dorg.slf4j.simpleLogger.defaultLogLevel=error elif [ "$NODE_INDEX" = "3" ]; then @@ -55,6 +62,21 @@ elif [ "$NODE_INDEX" = "3" ]; then pyenv global 3.6.3 python3 --version + # Install node@stable (for angular 6) + set +e + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash + export NVM_DIR="/opt/circleci/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + #nvm install stable + # install v16 instead of the latest stable version + nvm install 16 + nvm alias default 16 + node --version + + # Each step uses the same `$BASH_ENV`, so need to modify it + echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV + echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV + mvn --no-snapshot-updates --quiet verify -Psamples.circleci.node3 -Dorg.slf4j.simpleLogger.defaultLogLevel=error else @@ -62,13 +84,6 @@ else #sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 java -version - # Install golang version 1.14 - go version - sudo mkdir /usr/local/go1.14 - wget -c https://dl.google.com/go/go1.14.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local/go1.14 - export PATH="/usr/local/go1.14/go/bin:$PATH" - go version - mvn --no-snapshot-updates --quiet verify -Psamples.circleci.others -Dorg.slf4j.simpleLogger.defaultLogLevel=error mvn --no-snapshot-updates --quiet javadoc:javadoc -Psamples.circleci -Dorg.slf4j.simpleLogger.defaultLogLevel=error fi diff --git a/pom.xml b/pom.xml index 35974a9fdf0..c50de3b480d 100644 --- a/pom.xml +++ b/pom.xml @@ -1172,7 +1172,6 @@ - samples/server/petstore/kotlin-springboot samples/server/petstore/jaxrs/jersey2 samples/server/petstore/jaxrs/jersey2-useTags samples/server/petstore/spring-mvc @@ -1230,7 +1229,6 @@ samples/server/petstore/scala-akka-http-server samples/server/petstore/scalatra samples/server/petstore/scala-finch - @@ -1247,6 +1245,33 @@ samples/client/petstore/python samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent samples/openapi3/client/petstore/python + + + samples/client/petstore/typescript-angular-v7-provided-in-root + samples/client/petstore/typescript-angular-v11-provided-in-root + samples/openapi3/client/petstore/typescript/builds/default + samples/openapi3/client/petstore/typescript/tests/default + samples/openapi3/client/petstore/typescript/builds/jquery + samples/openapi3/client/petstore/typescript/tests/jquery + samples/openapi3/client/petstore/typescript/builds/object_params + samples/openapi3/client/petstore/typescript/tests/object_params + samples/openapi3/client/petstore/typescript/builds/inversify + + samples/client/petstore/typescript-fetch/builds/default + samples/client/petstore/typescript-fetch/builds/es6-target + samples/client/petstore/typescript-fetch/builds/with-npm-version + samples/client/petstore/typescript-fetch/tests/default + samples/client/petstore/typescript-node/npm + samples/client/petstore/typescript-rxjs/builds/with-npm-version + samples/client/petstore/typescript-axios/builds/with-npm-version + samples/client/petstore/typescript-axios/tests/default + samples/client/petstore/javascript-flowtyped + samples/client/petstore/javascript-es6 + samples/client/petstore/javascript-promise-es6 @@ -1290,39 +1315,6 @@ samples/client/petstore/java/microprofile-rest-client samples/client/petstore/java/apache-httpclient samples/client/petstore/groovy - - samples/client/petstore/go - samples/openapi3/client/petstore/go - samples/client/petstore/javascript-flowtyped - samples/client/petstore/javascript-es6 - samples/client/petstore/javascript-promise-es6 - samples/server/petstore/go-api-server - samples/server/petstore/go-gin-api-server - samples/server/petstore/go-echo-server - - - samples/client/petstore/typescript-angular-v7-provided-in-root - samples/client/petstore/typescript-angular-v11-provided-in-root - samples/openapi3/client/petstore/typescript/builds/default - samples/openapi3/client/petstore/typescript/tests/default - samples/openapi3/client/petstore/typescript/builds/jquery - samples/openapi3/client/petstore/typescript/tests/jquery - samples/openapi3/client/petstore/typescript/builds/object_params - samples/openapi3/client/petstore/typescript/tests/object_params - samples/openapi3/client/petstore/typescript/builds/inversify - - samples/client/petstore/typescript-fetch/builds/default - samples/client/petstore/typescript-fetch/builds/es6-target - samples/client/petstore/typescript-fetch/builds/with-npm-version - samples/client/petstore/typescript-fetch/tests/default - samples/client/petstore/typescript-node/npm - samples/client/petstore/typescript-rxjs/builds/with-npm-version - samples/client/petstore/typescript-axios/builds/with-npm-version - samples/client/petstore/typescript-axios/tests/default @@ -1356,6 +1348,8 @@ samples/client/petstore/kotlin-threetenbp samples/client/petstore/kotlin-uppercase-enum + samples/server/petstore/kotlin-springboot + @@ -1388,6 +1382,12 @@ + + samples/client/petstore/go + samples/openapi3/client/petstore/go + samples/server/petstore/go-api-server + samples/server/petstore/go-gin-api-server + samples/server/petstore/go-echo-server From d130985f85737e9405df0926fe06134f5dc3e78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Mets=C3=A4l=C3=A4?= Date: Fri, 29 Oct 2021 17:05:23 +0300 Subject: [PATCH 19/25] [ts-angular]: add ts-ignore directives to avoid compilation errors (#10713) The unused imports don't pass stricter TS compiler settings. --- .../src/main/resources/typescript-angular/api.service.mustache | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/default/api/default.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/single-request-parameter/api/pet.service.ts | 3 +++ .../builds/single-request-parameter/api/store.service.ts | 2 ++ .../builds/single-request-parameter/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ .../builds/with-prefixed-module-name/api/pet.service.ts | 3 +++ .../builds/with-prefixed-module-name/api/store.service.ts | 2 ++ .../builds/with-prefixed-module-name/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/default/api/pet.service.ts | 3 +++ .../builds/default/api/store.service.ts | 2 ++ .../builds/default/api/user.service.ts | 2 ++ .../builds/with-npm/api/pet.service.ts | 3 +++ .../builds/with-npm/api/store.service.ts | 2 ++ .../builds/with-npm/api/user.service.ts | 2 ++ 62 files changed, 144 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache index cc7f28eee00..4c5355be9ad 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache @@ -9,9 +9,11 @@ import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; {{#imports}} +// @ts-ignore import { {{ classname }} } from '{{ filename }}'; {{/imports}} +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { {{configurationClassName}} } from '../configuration'; {{#withInterfaces}} diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts index c21facfef1f..6a74ef3266b 100644 --- a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Fruit } from '../model/fruit'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts index a3bb80fd1c3..fe63a65b63b 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts index ba1af51f2af..d1f6b021e97 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts index 8f5fdccbb24..74920d0f560 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts index a3bb80fd1c3..fe63a65b63b 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts index ba1af51f2af..d1f6b021e97 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts index 8f5fdccbb24..74920d0f560 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts index 3f19c7121aa..867c9a3ea62 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts index c1e177bce56..4de27ffefa1 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts index 3f13dc90e17..90ef87d8371 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts index 3f19c7121aa..867c9a3ea62 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts index c1e177bce56..4de27ffefa1 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts index 3f13dc90e17..90ef87d8371 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts index 3f19c7121aa..867c9a3ea62 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts index c1e177bce56..4de27ffefa1 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts index 3f13dc90e17..90ef87d8371 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts index 3f19c7121aa..867c9a3ea62 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts index c1e177bce56..4de27ffefa1 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts index 3f13dc90e17..90ef87d8371 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts index 4c18dd863be..1f775776582 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts index 37fc3bd68bc..bad85023eea 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts index 304be84784b..0181b7c6889 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts index 209bc5dd588..56e0b0d6e06 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { PetStoreConfiguration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts index bd2dd3768e6..d561fc8a01d 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { PetStoreConfiguration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts index aebbfb3c47b..5635e4a0021 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { PetStoreConfiguration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts index 60cd6a36f29..c22a87909bc 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts index 115d9339268..4d3a302a7df 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts index 09835bf872e..20a37757325 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts index 23bbf686609..8298d62d182 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/pet.service.ts @@ -18,9 +18,12 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { ApiResponse } from '../model/apiResponse'; +// @ts-ignore import { Pet } from '../model/pet'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts index 43135a4b747..a90fbb92ab8 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/store.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { Order } from '../model/order'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts index 4326037967a..f3565253c9c 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/api/user.service.ts @@ -18,8 +18,10 @@ import { HttpClient, HttpHeaders, HttpParams, import { CustomHttpParameterCodec } from '../encoder'; import { Observable } from 'rxjs'; +// @ts-ignore import { User } from '../model/user'; +// @ts-ignore import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; import { Configuration } from '../configuration'; From 912d993955216a2c22e657e3cc26fdca39943e76 Mon Sep 17 00:00:00 2001 From: Sylhare Date: Fri, 29 Oct 2021 11:08:14 -0400 Subject: [PATCH 20/25] Add openapi-generator kotlin article (#10731) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 397802a8bdd..e993fdf0fb2 100644 --- a/README.md +++ b/README.md @@ -833,6 +833,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2021-05-31 - [FlutterでOpen Api Generator(Swagger)を使う](https://aakira.app/blog/2021/05/flutter-open-api/) by [AAkira](https://twitter.com/_a_akira) - 2021-06-22 - [Rest API Documentation and Client Generation With OpenAPI](https://dzone.com/articles/rest-api-documentation-and-client-generation-with) by [Prasanth Gullapalli](https://dzone.com/users/1011797/prasanthnath.g@gmail.com.html) - 2021-07-16 - [銀行事業のサーバーサイド開発について / LINE 京都開発室 エンジニア採用説明会](https://www.youtube.com/watch?v=YrrKQHxLPpQ) by 野田誠人, Robert Mitchell +- 2021-07-19 - [OpenAPI code generation with kotlin](https://sylhare.github.io/2021/07/19/Openapi-swagger-codegen-with-kotlin.html) by [sylhare](https://github.com/sylhare) - 2021-07-29 - [How To Rewrite a Huge Codebase](https://dzone.com/articles/how-to-rewrite-a-huge-code-base) by [Curtis Poe](https://dzone.com/users/4565446/publiusovidius.html) - 2021-08-21 - [Generating Client APIs using Swagger Part 1](https://medium.com/@flowsquad/generating-client-apis-using-swagger-part-1-2d46f13f5e92) by [FlowSquad.io](https://medium.com/@flowsquad) - 2021-09-11 - [Invoking AWS ParallelCluster API](https://docs.aws.amazon.com/parallelcluster/latest/ug/api-reference-v3.html) at [AWS ParallelCluster API official documentation](https://docs.aws.amazon.com/parallelcluster/latest/ug/api-reference-v3.html) From 4e21b6180040b84d1117165911f2b35ff94e1496 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 30 Oct 2021 14:42:11 +0800 Subject: [PATCH 21/25] [powershell] add file upload support (#10735) * add file upload support * comment out c# tests * Revert "comment out c# tests" This reverts commit 8f500908fb6366be548e08f437693ec0aa5199d3. --- .../resources/powershell/api_client.mustache | 34 +++++++++++++++++-- .../powershell/src/PSPetstore/PSPetstore.psd1 | 13 +++++-- .../src/PSPetstore/Private/PSApiClient.ps1 | 34 +++++++++++++++++-- 3 files changed, 75 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache index 5c364247594..2435b7b0ced 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache @@ -56,9 +56,15 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { $HeaderParameters['Accept'] = $Accept } + [string]$MultiPartBoundary = $null $ContentType= SelectHeaders -Headers $ContentTypes if ($ContentType) { $HeaderParameters['Content-Type'] = $ContentType + if ($ContentType -eq 'multipart/form-data') { + [string]$MultiPartBoundary = [System.Guid]::NewGuid() + $MultiPartBoundary = "---------------------------$MultiPartBoundary" + $HeaderParameters['Content-Type'] = "$ContentType; boundary=$MultiPartBoundary" + } } # add default headers if any @@ -66,7 +72,6 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { $HeaderParameters[$header.Name] = $header.Value } - # construct URL query string $HttpValues = [System.Web.HttpUtility]::ParseQueryString([String]::Empty) foreach ($Parameter in $QueryParameters.GetEnumerator()) { @@ -84,9 +89,34 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { # include form parameters in the request body if ($FormParameters -and $FormParameters.Count -gt 0) { - $RequestBody = $FormParameters + if (![string]::IsNullOrEmpty($MultiPartBoundary)) { + $RequestBody = "" + $LF = "`r`n" + $FormParameters.Keys | ForEach-Object { + $value = $FormParameters[$_] + $isFile = $value.GetType().FullName -eq "System.IO.FileInfo" + + $RequestBody += "--$MultiPartBoundary$LF" + $RequestBody += "Content-Disposition: form-data; name=`"$_`"" + if ($isFile) { + $fileName = $value.Name + $RequestBody += "; filename=`"$fileName`"$LF" + $RequestBody += "Content-Type: application/octet-stream$LF$LF" + $RequestBody += Get-Content -Path $value.FullName + } else { + $RequestBody += "$LF$LF" + $RequestBody += ([string]$value) + } + $RequestBody += "$LF--$MultiPartBoundary" + } + $RequestBody += "--" + } else { + $RequestBody = $FormParameters + } } + + if ($Body -or $IsBodyNullable) { $RequestBody = $Body if ([string]::IsNullOrEmpty($RequestBody) -and $IsBodyNullable -eq $true) { diff --git a/samples/client/petstore/powershell/src/PSPetstore/PSPetstore.psd1 b/samples/client/petstore/powershell/src/PSPetstore/PSPetstore.psd1 index 6329693a91f..2860418807d 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/PSPetstore.psd1 +++ b/samples/client/petstore/powershell/src/PSPetstore/PSPetstore.psd1 @@ -3,7 +3,7 @@ # # Generated by: OpenAPI Generator Team # -# Generated on: 30-11-2020 +# Generated on: 10/30/2021 # @{ @@ -45,7 +45,7 @@ PowerShellVersion = '5.0' # DotNetFrameworkVersion = '' # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# CLRVersion = '' +# ClrVersion = '' # Processor architecture (None, X86, Amd64) required by this module # ProcessorArchitecture = '' @@ -128,6 +128,15 @@ PrivateData = @{ # ReleaseNotes of this module ReleaseNotes = 'This is a sample project' + # Prerelease string of this module + # Prerelease = '' + + # Flag to indicate whether the module requires explicit user acceptance for install/update/save + # RequireLicenseAcceptance = $false + + # External dependent modules of this module + # ExternalModuleDependencies = @() + } # End of PSData hashtable } # End of PrivateData hashtable diff --git a/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 index aacf6f6d0d1..11745f18614 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 @@ -62,9 +62,15 @@ function Invoke-PSApiClient { $HeaderParameters['Accept'] = $Accept } + [string]$MultiPartBoundary = $null $ContentType= SelectHeaders -Headers $ContentTypes if ($ContentType) { $HeaderParameters['Content-Type'] = $ContentType + if ($ContentType -eq 'multipart/form-data') { + [string]$MultiPartBoundary = [System.Guid]::NewGuid() + $MultiPartBoundary = "---------------------------$MultiPartBoundary" + $HeaderParameters['Content-Type'] = "$ContentType; boundary=$MultiPartBoundary" + } } # add default headers if any @@ -72,7 +78,6 @@ function Invoke-PSApiClient { $HeaderParameters[$header.Name] = $header.Value } - # construct URL query string $HttpValues = [System.Web.HttpUtility]::ParseQueryString([String]::Empty) foreach ($Parameter in $QueryParameters.GetEnumerator()) { @@ -90,9 +95,34 @@ function Invoke-PSApiClient { # include form parameters in the request body if ($FormParameters -and $FormParameters.Count -gt 0) { - $RequestBody = $FormParameters + if (![string]::IsNullOrEmpty($MultiPartBoundary)) { + $RequestBody = "" + $LF = "`r`n" + $FormParameters.Keys | ForEach-Object { + $value = $FormParameters[$_] + $isFile = $value.GetType().FullName -eq "System.IO.FileInfo" + + $RequestBody += "--$MultiPartBoundary$LF" + $RequestBody += "Content-Disposition: form-data; name=`"$_`"" + if ($isFile) { + $fileName = $value.Name + $RequestBody += "; filename=`"$fileName`"$LF" + $RequestBody += "Content-Type: application/octet-stream$LF$LF" + $RequestBody += Get-Content -Path $value.FullName + } else { + $RequestBody += "$LF$LF" + $RequestBody += ([string]$value) + } + $RequestBody += "$LF--$MultiPartBoundary" + } + $RequestBody += "--" + } else { + $RequestBody = $FormParameters + } } + + if ($Body -or $IsBodyNullable) { $RequestBody = $Body if ([string]::IsNullOrEmpty($RequestBody) -and $IsBodyNullable -eq $true) { From c3740dd64755076990248e5eef821dfd4b07f314 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 30 Oct 2021 14:42:48 +0800 Subject: [PATCH 22/25] update scribejava to 8.x (#10733) --- .../main/resources/Java/libraries/jersey2/build.gradle.mustache | 2 +- .../main/resources/Java/libraries/jersey2/build.sbt.mustache | 2 +- .../src/main/resources/Java/libraries/jersey2/pom.mustache | 2 +- .../petstore/java/jersey2-java8-localdatetime/build.gradle | 2 +- .../client/petstore/java/jersey2-java8-localdatetime/build.sbt | 2 +- .../client/petstore/java/jersey2-java8-localdatetime/pom.xml | 2 +- samples/client/petstore/java/jersey2-java8/build.gradle | 2 +- samples/client/petstore/java/jersey2-java8/build.sbt | 2 +- samples/client/petstore/java/jersey2-java8/pom.xml | 2 +- .../openapi3/client/petstore/java/jersey2-java8/build.gradle | 2 +- samples/openapi3/client/petstore/java/jersey2-java8/build.sbt | 2 +- samples/openapi3/client/petstore/java/jersey2-java8/pom.xml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache index fcc366f710d..37d60273dee 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache @@ -121,7 +121,7 @@ ext { threetenbp_version = "2.9.10" {{/threetenbp}} {{#hasOAuthMethods}} - scribejava_apis_version = "6.9.0" + scribejava_apis_version = "8.3.1" {{/hasOAuthMethods}} {{#hasHttpSignatureMethods}} tomitribe_http_signatures_version = "1.7" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache index f2c624f6799..3b16db61065 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache @@ -32,7 +32,7 @@ lazy val root = (project in file(".")). "org.openapitools" % "jackson-databind-nullable" % "0.2.1" % "compile", {{/openApiNullable}} {{#hasOAuthMethods}} - "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", + "com.github.scribejava" % "scribejava-apis" % "8.3.1" % "compile", {{/hasOAuthMethods}} {{#hasHttpSignatureMethods}} "org.tomitribe" % "tomitribe-http-signatures" % "1.7" % "compile", diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache index 879e91df9f7..bd148d89abd 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -364,7 +364,7 @@ 1.7 {{/hasHttpSignatureMethods}} {{#hasOAuthMethods}} - 6.9.0 + 8.3.1 {{/hasOAuthMethods}} diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle b/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle index 346045b3e5d..40621886ce3 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle @@ -103,7 +103,7 @@ ext { jakarta_annotation_version = "1.3.5" jersey_version = "2.35" junit_version = "4.13.2" - scribejava_apis_version = "6.9.0" + scribejava_apis_version = "8.3.1" } dependencies { diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt b/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt index aacd11922c9..a5e716d7c18 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt @@ -21,7 +21,7 @@ lazy val root = (project in file(".")). "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.0" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.13.0" % "compile", "org.openapitools" % "jackson-databind-nullable" % "0.2.1" % "compile", - "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", + "com.github.scribejava" % "scribejava-apis" % "8.3.1" % "compile", "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", "junit" % "junit" % "4.13.2" % "test", "com.novocode" % "junit-interface" % "0.10" % "test" diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml b/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml index 385a5094213..8a771818fa1 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml @@ -305,6 +305,6 @@ 0.2.1 1.3.5 4.13.2 - 6.9.0 + 8.3.1 diff --git a/samples/client/petstore/java/jersey2-java8/build.gradle b/samples/client/petstore/java/jersey2-java8/build.gradle index cdefe2ed3cb..9cf958ea4ed 100644 --- a/samples/client/petstore/java/jersey2-java8/build.gradle +++ b/samples/client/petstore/java/jersey2-java8/build.gradle @@ -103,7 +103,7 @@ ext { jakarta_annotation_version = "1.3.5" jersey_version = "2.35" junit_version = "4.13.2" - scribejava_apis_version = "6.9.0" + scribejava_apis_version = "8.3.1" } dependencies { diff --git a/samples/client/petstore/java/jersey2-java8/build.sbt b/samples/client/petstore/java/jersey2-java8/build.sbt index db7f6feb2ef..424fe3d4581 100644 --- a/samples/client/petstore/java/jersey2-java8/build.sbt +++ b/samples/client/petstore/java/jersey2-java8/build.sbt @@ -21,7 +21,7 @@ lazy val root = (project in file(".")). "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.0" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.13.0" % "compile", "org.openapitools" % "jackson-databind-nullable" % "0.2.1" % "compile", - "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", + "com.github.scribejava" % "scribejava-apis" % "8.3.1" % "compile", "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", "junit" % "junit" % "4.13.2" % "test", "com.novocode" % "junit-interface" % "0.10" % "test" diff --git a/samples/client/petstore/java/jersey2-java8/pom.xml b/samples/client/petstore/java/jersey2-java8/pom.xml index 3f2afa02ca1..5fb184b6803 100644 --- a/samples/client/petstore/java/jersey2-java8/pom.xml +++ b/samples/client/petstore/java/jersey2-java8/pom.xml @@ -305,6 +305,6 @@ 0.2.1 1.3.5 4.13.2 - 6.9.0 + 8.3.1 diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle index 9e7ef31e808..dc5f013f2a8 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle @@ -103,7 +103,7 @@ ext { jakarta_annotation_version = "1.3.5" jersey_version = "2.35" junit_version = "4.13.2" - scribejava_apis_version = "6.9.0" + scribejava_apis_version = "8.3.1" tomitribe_http_signatures_version = "1.7" } diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt b/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt index b8e4d398e1a..a427b720ebd 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt +++ b/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt @@ -21,7 +21,7 @@ lazy val root = (project in file(".")). "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.0" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.13.0" % "compile", "org.openapitools" % "jackson-databind-nullable" % "0.2.1" % "compile", - "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", + "com.github.scribejava" % "scribejava-apis" % "8.3.1" % "compile", "org.tomitribe" % "tomitribe-http-signatures" % "1.7" % "compile", "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", "junit" % "junit" % "4.13.2" % "test", diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml b/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml index 89adddeb241..fae535e28b0 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml +++ b/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml @@ -311,6 +311,6 @@ 1.3.5 4.13.2 1.7 - 6.9.0 + 8.3.1 From 8551b0af492286a431c95ce3a37d7edf1ef4870a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 30 Oct 2021 16:55:33 +0800 Subject: [PATCH 23/25] [java][jersey2] remove warning using JsonMapper.builder (#10734) * remove warning usign JsonMapper.builder * add back java8 tag --- .../src/main/resources/Java/libraries/jersey2/JSON.mustache | 3 ++- .../src/main/java/org/openapitools/client/JSON.java | 3 ++- .../src/main/java/org/openapitools/client/JSON.java | 3 ++- .../src/main/java/org/openapitools/client/JSON.java | 3 ++- .../src/main/java/org/openapitools/client/JSON.java | 3 ++- .../src/main/java/org/openapitools/client/JSON.java | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/JSON.mustache index 3297c77e49b..5d9692610ee 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/JSON.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/JSON.mustache @@ -5,6 +5,7 @@ import org.threeten.bp.*; {{/threetenbp}} import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.json.JsonMapper; {{#openApiNullable}} import org.openapitools.jackson.nullable.JsonNullableModule; {{/openApiNullable}} @@ -36,7 +37,7 @@ public class JSON implements ContextResolver { public JSON() { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); + JsonMapper.builder().configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, true); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/JSON.java index 69a73213d8e..88345206919 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/JSON.java @@ -2,6 +2,7 @@ package org.openapitools.client; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.json.JsonMapper; import org.openapitools.jackson.nullable.JsonNullableModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.openapitools.client.model.*; @@ -21,7 +22,7 @@ public class JSON implements ContextResolver { public JSON() { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); + JsonMapper.builder().configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, true); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java index 69a73213d8e..88345206919 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java @@ -2,6 +2,7 @@ package org.openapitools.client; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.json.JsonMapper; import org.openapitools.jackson.nullable.JsonNullableModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.openapitools.client.model.*; @@ -21,7 +22,7 @@ public class JSON implements ContextResolver { public JSON() { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); + JsonMapper.builder().configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, true); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java index 7997f7ec2d4..f5874d83bf2 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java @@ -3,6 +3,7 @@ package org.openapitools.client; import org.threeten.bp.*; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.json.JsonMapper; import org.openapitools.jackson.nullable.JsonNullableModule; import com.fasterxml.jackson.datatype.threetenbp.ThreeTenModule; @@ -21,7 +22,7 @@ public class JSON implements ContextResolver { public JSON() { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); + JsonMapper.builder().configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, true); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/JSON.java b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/JSON.java index 69a73213d8e..88345206919 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/JSON.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/JSON.java @@ -2,6 +2,7 @@ package org.openapitools.client; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.json.JsonMapper; import org.openapitools.jackson.nullable.JsonNullableModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.openapitools.client.model.*; @@ -21,7 +22,7 @@ public class JSON implements ContextResolver { public JSON() { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); + JsonMapper.builder().configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, true); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java index 69a73213d8e..88345206919 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/JSON.java @@ -2,6 +2,7 @@ package org.openapitools.client; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.json.JsonMapper; import org.openapitools.jackson.nullable.JsonNullableModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.openapitools.client.model.*; @@ -21,7 +22,7 @@ public class JSON implements ContextResolver { public JSON() { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); + JsonMapper.builder().configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, true); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); From 68b5f866ffbfb014eba9685e8bd2cfaf4aeddff0 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 31 Oct 2021 23:10:46 +0800 Subject: [PATCH 24/25] update readme with better gradle instruction (#10740) --- .../Java/libraries/okhttp-gson/README.mustache | 11 +++++++++-- .../others/java/okhttp-gson-streaming/README.md | 11 +++++++++-- .../java/okhttp-gson-dynamicOperations/README.md | 11 +++++++++-- .../java/okhttp-gson-parcelableModel/README.md | 11 +++++++++-- samples/client/petstore/java/okhttp-gson/README.md | 11 +++++++++-- 5 files changed, 45 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/README.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/README.mustache index dd21bcad45f..a1a142bd488 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/README.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/README.mustache @@ -19,7 +19,7 @@ Building the API client library requires: 1. Java {{#java8}}1.8{{/java8}}{{^java8}}1.7{{/java8}}+ -2. Maven/Gradle +2. Maven (3.8.3+)/Gradle (7.2+) ## Installation @@ -55,7 +55,14 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "{{{groupId}}}:{{{artifactId}}}:{{{artifactVersion}}}" + repositories { + mavenCentral() // Needed if the '{{{artifactId}}}' jar has been published to maven central. + mavenLocal() // Needed if the '{{{artifactId}}}' jar has been published to the local maven repo. + } + + dependencies { + implementation "{{{groupId}}}:{{{artifactId}}}:{{{artifactVersion}}}" + } ``` ### Others diff --git a/samples/client/others/java/okhttp-gson-streaming/README.md b/samples/client/others/java/okhttp-gson-streaming/README.md index 4f967a17bac..418a3fb4278 100644 --- a/samples/client/others/java/okhttp-gson-streaming/README.md +++ b/samples/client/others/java/okhttp-gson-streaming/README.md @@ -13,7 +13,7 @@ No description provided (generated by Openapi Generator https://github.com/opena Building the API client library requires: 1. Java 1.7+ -2. Maven/Gradle +2. Maven (3.8.3+)/Gradle (7.2+) ## Installation @@ -49,7 +49,14 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "org.openapitools:petstore-okhttp-gson:1.0" + repositories { + mavenCentral() // Needed if the 'petstore-okhttp-gson' jar has been published to maven central. + mavenLocal() // Needed if the 'petstore-okhttp-gson' jar has been published to the local maven repo. + } + + dependencies { + implementation "org.openapitools:petstore-okhttp-gson:1.0" + } ``` ### Others diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/README.md b/samples/client/petstore/java/okhttp-gson-dynamicOperations/README.md index b45b974dee3..c25c1a39c47 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/README.md +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/README.md @@ -13,7 +13,7 @@ This spec is mainly for testing Petstore server and contains fake endpoints, mod Building the API client library requires: 1. Java 1.7+ -2. Maven/Gradle +2. Maven (3.8.3+)/Gradle (7.2+) ## Installation @@ -49,7 +49,14 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "org.openapitools:petstore-okhttp-gson-dynamicoperations:1.0.0" + repositories { + mavenCentral() // Needed if the 'petstore-okhttp-gson-dynamicoperations' jar has been published to maven central. + mavenLocal() // Needed if the 'petstore-okhttp-gson-dynamicoperations' jar has been published to the local maven repo. + } + + dependencies { + implementation "org.openapitools:petstore-okhttp-gson-dynamicoperations:1.0.0" + } ``` ### Others diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/README.md b/samples/client/petstore/java/okhttp-gson-parcelableModel/README.md index 906bc302af8..40458ad8a74 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/README.md +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/README.md @@ -13,7 +13,7 @@ This spec is mainly for testing Petstore server and contains fake endpoints, mod Building the API client library requires: 1. Java 1.7+ -2. Maven/Gradle +2. Maven (3.8.3+)/Gradle (7.2+) ## Installation @@ -49,7 +49,14 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "org.openapitools:petstore-okhttp-gson-parcelableModel:1.0.0" + repositories { + mavenCentral() // Needed if the 'petstore-okhttp-gson-parcelableModel' jar has been published to maven central. + mavenLocal() // Needed if the 'petstore-okhttp-gson-parcelableModel' jar has been published to the local maven repo. + } + + dependencies { + implementation "org.openapitools:petstore-okhttp-gson-parcelableModel:1.0.0" + } ``` ### Others diff --git a/samples/client/petstore/java/okhttp-gson/README.md b/samples/client/petstore/java/okhttp-gson/README.md index 516d98bed0a..8a02b7818b8 100644 --- a/samples/client/petstore/java/okhttp-gson/README.md +++ b/samples/client/petstore/java/okhttp-gson/README.md @@ -13,7 +13,7 @@ This spec is mainly for testing Petstore server and contains fake endpoints, mod Building the API client library requires: 1. Java 1.7+ -2. Maven/Gradle +2. Maven (3.8.3+)/Gradle (7.2+) ## Installation @@ -49,7 +49,14 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "org.openapitools:petstore-okhttp-gson:1.0.0" + repositories { + mavenCentral() // Needed if the 'petstore-okhttp-gson' jar has been published to maven central. + mavenLocal() // Needed if the 'petstore-okhttp-gson' jar has been published to the local maven repo. + } + + dependencies { + implementation "org.openapitools:petstore-okhttp-gson:1.0.0" + } ``` ### Others From 9546a5a61bb95ccd4009463705450bdcf0cdd8b6 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 1 Nov 2021 00:47:32 +0800 Subject: [PATCH 25/25] [Java][okhttp] better docstring (#10741) * better docstring in api client, exception, response * more docstring update --- .../libraries/okhttp-gson/ApiClient.mustache | 91 +++++++++++++++---- .../okhttp-gson/ApiResponse.mustache | 21 ++++- .../okhttp-gson/apiException.mustache | 64 ++++++++++++- .../org/openapitools/client/ApiClient.java | 83 ++++++++++++++--- .../org/openapitools/client/ApiException.java | 64 ++++++++++++- .../org/openapitools/client/ApiResponse.java | 21 ++++- .../org/openapitools/client/ApiClient.java | 83 +++++++++++++---- .../org/openapitools/client/ApiException.java | 64 ++++++++++++- .../org/openapitools/client/ApiResponse.java | 21 ++++- .../org/openapitools/client/ApiClient.java | 83 +++++++++++++---- .../org/openapitools/client/ApiException.java | 64 ++++++++++++- .../org/openapitools/client/ApiResponse.java | 21 ++++- .../org/openapitools/client/ApiClient.java | 83 +++++++++++++---- .../org/openapitools/client/ApiException.java | 64 ++++++++++++- .../org/openapitools/client/ApiResponse.java | 21 ++++- 15 files changed, 742 insertions(+), 106 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 357d8c71d0c..26df1b2bcda 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -72,6 +72,9 @@ import {{invokerPackage}}.auth.RetryingOAuth; import {{invokerPackage}}.auth.OAuthFlow; {{/hasOAuthMethods}} +/** + *

    ApiClient class.

    + */ public class ApiClient { private String basePath = "{{{basePath}}}"; @@ -100,7 +103,7 @@ public class ApiClient { private Map operationLookupMap = new HashMap<>(); {{/dynamicOperations}} - /* + /** * Basic constructor for ApiClient */ public ApiClient() { @@ -116,8 +119,10 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object */ public ApiClient(OkHttpClient client) { init(); @@ -136,28 +141,28 @@ public class ApiClient { {{#hasOAuthMethods}} {{#oauthMethods}} {{#-first}} - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID */ public ApiClient(String clientId) { this(clientId, null, null); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID and additional parameters */ public ApiClient(String clientId, Map parameters) { this(clientId, null, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID, secret, and additional parameters */ public ApiClient(String clientId, String clientSecret, Map parameters) { this(null, clientId, clientSecret, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with base path, client ID, secret, and additional parameters */ public ApiClient(String basePath, String clientId, String clientSecret, Map parameters) { @@ -264,7 +269,7 @@ public class ApiClient { * * @param newHttpClient An instance of OkHttpClient * @return Api Client - * @throws NullPointerException when newHttpClient is null + * @throws java.lang.NullPointerException when newHttpClient is null */ public ApiClient setHttpClient(OkHttpClient newHttpClient) { this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); @@ -336,6 +341,11 @@ public class ApiClient { return this; } + /** + *

    Getter for the field keyManagers.

    + * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ public KeyManager[] getKeyManagers() { return keyManagers; } @@ -353,15 +363,32 @@ public class ApiClient { return this; } + /** + *

    Getter for the field dateFormat.

    + * + * @return a {@link java.text.DateFormat} object + */ public DateFormat getDateFormat() { return dateFormat; } + /** + *

    Setter for the field dateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setDateFormat(DateFormat dateFormat) { this.json.setDateFormat(dateFormat); return this; } + /** + *

    Set SqlDateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setSqlDateFormat(DateFormat dateFormat) { this.json.setSqlDateFormat(dateFormat); return this; @@ -380,17 +407,35 @@ public class ApiClient { {{/joda}} {{#jsr310}} + /** + *

    Set OffsetDateTimeFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { this.json.setOffsetDateTimeFormat(dateFormat); return this; } + /** + *

    Set LocalDateFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { this.json.setLocalDateFormat(dateFormat); return this; } {{/jsr310}} + /** + *

    Set LenientOnJson.

    + * + * @param lenientOnJson a boolean + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLenientOnJson(boolean lenientOnJson) { this.json.setLenientOnJson(lenientOnJson); return this; @@ -610,7 +655,7 @@ public class ApiClient { /** * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param connectionTimeout connection timeout in milliseconds * @return Api client @@ -632,7 +677,7 @@ public class ApiClient { /** * Sets the read timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param readTimeout read timeout in milliseconds * @return Api client @@ -654,7 +699,7 @@ public class ApiClient { /** * Sets the write timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param writeTimeout connection timeout in milliseconds * @return Api client @@ -945,7 +990,7 @@ public class ApiClient { * @param response HTTP response * @param returnType The type of the Java object * @return The deserialized Java object - * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * @throws org.openapitools.client.ApiException If fail to deserialize response body, i.e. cannot read response body * or the Content-Type of the response is not supported. */ @SuppressWarnings("unchecked") @@ -1006,7 +1051,7 @@ public class ApiClient { * @param obj The Java object * @param contentType The request Content-Type * @return The serialized request body - * @throws ApiException If fail to serialize the given object + * @throws org.openapitools.client.ApiException If fail to serialize the given object */ public RequestBody serialize(Object obj, String contentType) throws ApiException { if (obj instanceof byte[]) { @@ -1032,7 +1077,7 @@ public class ApiClient { * Download file from the given response. * * @param response An instance of the Response object - * @throws ApiException If fail to read file content from response and write to disk + * @throws org.openapitools.client.ApiException If fail to read file content from response and write to disk * @return Downloaded file */ public File downloadFileFromResponse(Response response) throws ApiException { @@ -1052,7 +1097,7 @@ public class ApiClient { * * @param response An instance of the Response object * @return Prepared file for the download - * @throws IOException If fail to prepare file for download + * @throws java.io.IOException If fail to prepare file for download */ public File prepareDownloadFile(Response response) throws IOException { String filename = null; @@ -1096,7 +1141,7 @@ public class ApiClient { * @param Type * @param call An instance of the Call object * @return ApiResponse<T> - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call) throws ApiException { return execute(call, null); @@ -1111,7 +1156,7 @@ public class ApiClient { * @return ApiResponse object containing response status, headers and * data, which is a Java object deserialized from response body and would be null * when returnType is null. - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call, Type returnType) throws ApiException { try { @@ -1124,6 +1169,14 @@ public class ApiClient { } {{#supportStreaming}} + /** + *

    Execute stream.

    + * + * @param call a {@link okhttp3.Call} object + * @param returnType a {@link java.lang.reflect.Type} object + * @return a {@link java.io.InputStream} object + * @throws org.openapitools.client.ApiException if any. + */ public InputStream executeStream(Call call, Type returnType) throws ApiException { try { Response response = call.execute(); @@ -1192,7 +1245,7 @@ public class ApiClient { * @param response Response * @param returnType Return type * @return Type - * @throws ApiException If the response has an unsuccessful status code or + * @throws org.openapitools.client.ApiException If the response has an unsuccessful status code or * fail to deserialize the response body */ public T handleResponse(Response response, Type returnType) throws ApiException { @@ -1238,7 +1291,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP call - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); @@ -1260,7 +1313,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP request - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiResponse.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiResponse.mustache index 1e277319a93..cecbaac1df2 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiResponse.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiResponse.mustache @@ -11,8 +11,6 @@ import java.util.TreeMap; /** * API response returned by API call. - * - * @param The type of data that is deserialized from response body */ public class ApiResponse { final private int statusCode; @@ -20,6 +18,8 @@ public class ApiResponse { final private T data; /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response */ @@ -28,6 +28,8 @@ public class ApiResponse { } /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response * @param data The object deserialized from response bod @@ -44,14 +46,29 @@ public class ApiResponse { this.data = data; } + /** + *

    Get the status code.

    + * + * @return the status code + */ public int getStatusCode() { return statusCode; } + /** + *

    Get the headers.

    + * + * @return a {@link java.util.Map} of headers + */ public Map> getHeaders() { return headers; } + /** + *

    Get the data.

    + * + * @return the data + */ public T getData() { return data; } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/apiException.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/apiException.mustache index d28b1bd9630..68d872ceff8 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/apiException.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/apiException.mustache @@ -9,22 +9,47 @@ import java.util.Map.Entry; import java.util.TreeMap; {{/caseInsensitiveResponseHeaders}} +/** + *

    ApiException class.

    + */ {{>generatedAnnotation}} public class ApiException extends{{#useRuntimeException}} RuntimeException {{/useRuntimeException}}{{^useRuntimeException}} Exception {{/useRuntimeException}}{ private int code = 0; private Map> responseHeaders = null; private String responseBody = null; - + + /** + *

    Constructor for ApiException.

    + */ public ApiException() {} + /** + *

    Constructor for ApiException.

    + * + * @param throwable a {@link java.lang.Throwable} object + */ public ApiException(Throwable throwable) { super(throwable); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + */ public ApiException(String message) { super(message); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { super(message, throwable); this.code = code; @@ -38,23 +63,60 @@ public class ApiException extends{{#useRuntimeException}} RuntimeException {{/us this.responseBody = responseBody; } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, int code, Map> responseHeaders, String responseBody) { this(message, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { this(message, throwable, code, responseHeaders, null); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, Map> responseHeaders, String responseBody) { this((String) null, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ public ApiException(int code, String message) { super(message); this.code = code; } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, String message, Map> responseHeaders, String responseBody) { this(code, message); {{#caseInsensitiveResponseHeaders}} diff --git a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java index c48b4479cc6..88b271de498 100644 --- a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java @@ -54,6 +54,9 @@ import org.openapitools.client.auth.HttpBasicAuth; import org.openapitools.client.auth.HttpBearerAuth; import org.openapitools.client.auth.ApiKeyAuth; +/** + *

    ApiClient class.

    + */ public class ApiClient { private String basePath = "http://localhost:8082"; @@ -78,7 +81,7 @@ public class ApiClient { private HttpLoggingInterceptor loggingInterceptor; - /* + /** * Basic constructor for ApiClient */ public ApiClient() { @@ -90,8 +93,10 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object */ public ApiClient(OkHttpClient client) { init(); @@ -162,7 +167,7 @@ public class ApiClient { * * @param newHttpClient An instance of OkHttpClient * @return Api Client - * @throws NullPointerException when newHttpClient is null + * @throws java.lang.NullPointerException when newHttpClient is null */ public ApiClient setHttpClient(OkHttpClient newHttpClient) { this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); @@ -234,6 +239,11 @@ public class ApiClient { return this; } + /** + *

    Getter for the field keyManagers.

    + * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ public KeyManager[] getKeyManagers() { return keyManagers; } @@ -251,30 +261,65 @@ public class ApiClient { return this; } + /** + *

    Getter for the field dateFormat.

    + * + * @return a {@link java.text.DateFormat} object + */ public DateFormat getDateFormat() { return dateFormat; } + /** + *

    Setter for the field dateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setDateFormat(DateFormat dateFormat) { this.json.setDateFormat(dateFormat); return this; } + /** + *

    Set SqlDateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setSqlDateFormat(DateFormat dateFormat) { this.json.setSqlDateFormat(dateFormat); return this; } + /** + *

    Set OffsetDateTimeFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { this.json.setOffsetDateTimeFormat(dateFormat); return this; } + /** + *

    Set LocalDateFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { this.json.setLocalDateFormat(dateFormat); return this; } + /** + *

    Set LenientOnJson.

    + * + * @param lenientOnJson a boolean + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLenientOnJson(boolean lenientOnJson) { this.json.setLenientOnJson(lenientOnJson); return this; @@ -471,7 +516,7 @@ public class ApiClient { /** * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param connectionTimeout connection timeout in milliseconds * @return Api client @@ -493,7 +538,7 @@ public class ApiClient { /** * Sets the read timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param readTimeout read timeout in milliseconds * @return Api client @@ -515,7 +560,7 @@ public class ApiClient { /** * Sets the write timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param writeTimeout connection timeout in milliseconds * @return Api client @@ -749,7 +794,7 @@ public class ApiClient { * @param response HTTP response * @param returnType The type of the Java object * @return The deserialized Java object - * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * @throws org.openapitools.client.ApiException If fail to deserialize response body, i.e. cannot read response body * or the Content-Type of the response is not supported. */ @SuppressWarnings("unchecked") @@ -810,7 +855,7 @@ public class ApiClient { * @param obj The Java object * @param contentType The request Content-Type * @return The serialized request body - * @throws ApiException If fail to serialize the given object + * @throws org.openapitools.client.ApiException If fail to serialize the given object */ public RequestBody serialize(Object obj, String contentType) throws ApiException { if (obj instanceof byte[]) { @@ -836,7 +881,7 @@ public class ApiClient { * Download file from the given response. * * @param response An instance of the Response object - * @throws ApiException If fail to read file content from response and write to disk + * @throws org.openapitools.client.ApiException If fail to read file content from response and write to disk * @return Downloaded file */ public File downloadFileFromResponse(Response response) throws ApiException { @@ -856,7 +901,7 @@ public class ApiClient { * * @param response An instance of the Response object * @return Prepared file for the download - * @throws IOException If fail to prepare file for download + * @throws java.io.IOException If fail to prepare file for download */ public File prepareDownloadFile(Response response) throws IOException { String filename = null; @@ -900,7 +945,7 @@ public class ApiClient { * @param Type * @param call An instance of the Call object * @return ApiResponse<T> - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call) throws ApiException { return execute(call, null); @@ -915,7 +960,7 @@ public class ApiClient { * @return ApiResponse object containing response status, headers and * data, which is a Java object deserialized from response body and would be null * when returnType is null. - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call, Type returnType) throws ApiException { try { @@ -927,6 +972,14 @@ public class ApiClient { } } + /** + *

    Execute stream.

    + * + * @param call a {@link okhttp3.Call} object + * @param returnType a {@link java.lang.reflect.Type} object + * @return a {@link java.io.InputStream} object + * @throws org.openapitools.client.ApiException if any. + */ public InputStream executeStream(Call call, Type returnType) throws ApiException { try { Response response = call.execute(); @@ -994,7 +1047,7 @@ public class ApiClient { * @param response Response * @param returnType Return type * @return Type - * @throws ApiException If the response has an unsuccessful status code or + * @throws org.openapitools.client.ApiException If the response has an unsuccessful status code or * fail to deserialize the response body */ public T handleResponse(Response response, Type returnType) throws ApiException { @@ -1040,7 +1093,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP call - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); @@ -1062,7 +1115,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP request - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); diff --git a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiException.java b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiException.java index 8e7eb0faf90..cf5905d28ec 100644 --- a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiException.java @@ -16,22 +16,47 @@ package org.openapitools.client; import java.util.Map; import java.util.List; +/** + *

    ApiException class.

    + */ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class ApiException extends Exception { private int code = 0; private Map> responseHeaders = null; private String responseBody = null; - + + /** + *

    Constructor for ApiException.

    + */ public ApiException() {} + /** + *

    Constructor for ApiException.

    + * + * @param throwable a {@link java.lang.Throwable} object + */ public ApiException(Throwable throwable) { super(throwable); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + */ public ApiException(String message) { super(message); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { super(message, throwable); this.code = code; @@ -39,23 +64,60 @@ public class ApiException extends Exception { this.responseBody = responseBody; } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, int code, Map> responseHeaders, String responseBody) { this(message, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { this(message, throwable, code, responseHeaders, null); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, Map> responseHeaders, String responseBody) { this((String) null, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ public ApiException(int code, String message) { super(message); this.code = code; } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, String message, Map> responseHeaders, String responseBody) { this(code, message); this.responseHeaders = responseHeaders; diff --git a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiResponse.java b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiResponse.java index 7cf4cb9fdef..386fc57c438 100644 --- a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiResponse.java +++ b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiResponse.java @@ -18,8 +18,6 @@ import java.util.Map; /** * API response returned by API call. - * - * @param The type of data that is deserialized from response body */ public class ApiResponse { final private int statusCode; @@ -27,6 +25,8 @@ public class ApiResponse { final private T data; /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response */ @@ -35,6 +35,8 @@ public class ApiResponse { } /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response * @param data The object deserialized from response bod @@ -45,14 +47,29 @@ public class ApiResponse { this.data = data; } + /** + *

    Get the status code.

    + * + * @return the status code + */ public int getStatusCode() { return statusCode; } + /** + *

    Get the headers.

    + * + * @return a {@link java.util.Map} of headers + */ public Map> getHeaders() { return headers; } + /** + *

    Get the data.

    + * + * @return the data + */ public T getData() { return data; } diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java index e9e3861cdae..51a21bdbe9f 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java @@ -65,6 +65,9 @@ import org.openapitools.client.auth.OAuth; import org.openapitools.client.auth.RetryingOAuth; import org.openapitools.client.auth.OAuthFlow; +/** + *

    ApiClient class.

    + */ public class ApiClient { private String basePath = "http://petstore.swagger.io:80/v2"; @@ -91,7 +94,7 @@ public class ApiClient { private Map operationLookupMap = new HashMap<>(); - /* + /** * Basic constructor for ApiClient */ public ApiClient() { @@ -107,8 +110,10 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object */ public ApiClient(OkHttpClient client) { init(); @@ -124,28 +129,28 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID */ public ApiClient(String clientId) { this(clientId, null, null); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID and additional parameters */ public ApiClient(String clientId, Map parameters) { this(clientId, null, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID, secret, and additional parameters */ public ApiClient(String clientId, String clientSecret, Map parameters) { this(null, clientId, clientSecret, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with base path, client ID, secret, and additional parameters */ public ApiClient(String basePath, String clientId, String clientSecret, Map parameters) { @@ -241,7 +246,7 @@ public class ApiClient { * * @param newHttpClient An instance of OkHttpClient * @return Api Client - * @throws NullPointerException when newHttpClient is null + * @throws java.lang.NullPointerException when newHttpClient is null */ public ApiClient setHttpClient(OkHttpClient newHttpClient) { this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); @@ -313,6 +318,11 @@ public class ApiClient { return this; } + /** + *

    Getter for the field keyManagers.

    + * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ public KeyManager[] getKeyManagers() { return keyManagers; } @@ -330,30 +340,65 @@ public class ApiClient { return this; } + /** + *

    Getter for the field dateFormat.

    + * + * @return a {@link java.text.DateFormat} object + */ public DateFormat getDateFormat() { return dateFormat; } + /** + *

    Setter for the field dateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setDateFormat(DateFormat dateFormat) { this.json.setDateFormat(dateFormat); return this; } + /** + *

    Set SqlDateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setSqlDateFormat(DateFormat dateFormat) { this.json.setSqlDateFormat(dateFormat); return this; } + /** + *

    Set OffsetDateTimeFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { this.json.setOffsetDateTimeFormat(dateFormat); return this; } + /** + *

    Set LocalDateFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { this.json.setLocalDateFormat(dateFormat); return this; } + /** + *

    Set LenientOnJson.

    + * + * @param lenientOnJson a boolean + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLenientOnJson(boolean lenientOnJson) { this.json.setLenientOnJson(lenientOnJson); return this; @@ -556,7 +601,7 @@ public class ApiClient { /** * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param connectionTimeout connection timeout in milliseconds * @return Api client @@ -578,7 +623,7 @@ public class ApiClient { /** * Sets the read timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param readTimeout read timeout in milliseconds * @return Api client @@ -600,7 +645,7 @@ public class ApiClient { /** * Sets the write timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param writeTimeout connection timeout in milliseconds * @return Api client @@ -836,7 +881,7 @@ public class ApiClient { * @param response HTTP response * @param returnType The type of the Java object * @return The deserialized Java object - * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * @throws org.openapitools.client.ApiException If fail to deserialize response body, i.e. cannot read response body * or the Content-Type of the response is not supported. */ @SuppressWarnings("unchecked") @@ -897,7 +942,7 @@ public class ApiClient { * @param obj The Java object * @param contentType The request Content-Type * @return The serialized request body - * @throws ApiException If fail to serialize the given object + * @throws org.openapitools.client.ApiException If fail to serialize the given object */ public RequestBody serialize(Object obj, String contentType) throws ApiException { if (obj instanceof byte[]) { @@ -923,7 +968,7 @@ public class ApiClient { * Download file from the given response. * * @param response An instance of the Response object - * @throws ApiException If fail to read file content from response and write to disk + * @throws org.openapitools.client.ApiException If fail to read file content from response and write to disk * @return Downloaded file */ public File downloadFileFromResponse(Response response) throws ApiException { @@ -943,7 +988,7 @@ public class ApiClient { * * @param response An instance of the Response object * @return Prepared file for the download - * @throws IOException If fail to prepare file for download + * @throws java.io.IOException If fail to prepare file for download */ public File prepareDownloadFile(Response response) throws IOException { String filename = null; @@ -987,7 +1032,7 @@ public class ApiClient { * @param Type * @param call An instance of the Call object * @return ApiResponse<T> - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call) throws ApiException { return execute(call, null); @@ -1002,7 +1047,7 @@ public class ApiClient { * @return ApiResponse object containing response status, headers and * data, which is a Java object deserialized from response body and would be null * when returnType is null. - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call, Type returnType) throws ApiException { try { @@ -1066,7 +1111,7 @@ public class ApiClient { * @param response Response * @param returnType Return type * @return Type - * @throws ApiException If the response has an unsuccessful status code or + * @throws org.openapitools.client.ApiException If the response has an unsuccessful status code or * fail to deserialize the response body */ public T handleResponse(Response response, Type returnType) throws ApiException { @@ -1112,7 +1157,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP call - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); @@ -1134,7 +1179,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP request - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiException.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiException.java index c814fc5bbc9..bd303bed5f9 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiException.java @@ -16,22 +16,47 @@ package org.openapitools.client; import java.util.Map; import java.util.List; +/** + *

    ApiException class.

    + */ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class ApiException extends Exception { private int code = 0; private Map> responseHeaders = null; private String responseBody = null; - + + /** + *

    Constructor for ApiException.

    + */ public ApiException() {} + /** + *

    Constructor for ApiException.

    + * + * @param throwable a {@link java.lang.Throwable} object + */ public ApiException(Throwable throwable) { super(throwable); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + */ public ApiException(String message) { super(message); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { super(message, throwable); this.code = code; @@ -39,23 +64,60 @@ public class ApiException extends Exception { this.responseBody = responseBody; } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, int code, Map> responseHeaders, String responseBody) { this(message, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { this(message, throwable, code, responseHeaders, null); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, Map> responseHeaders, String responseBody) { this((String) null, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ public ApiException(int code, String message) { super(message); this.code = code; } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, String message, Map> responseHeaders, String responseBody) { this(code, message); this.responseHeaders = responseHeaders; diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiResponse.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiResponse.java index 9bb5cac17b4..fb13945bd77 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiResponse.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiResponse.java @@ -18,8 +18,6 @@ import java.util.Map; /** * API response returned by API call. - * - * @param The type of data that is deserialized from response body */ public class ApiResponse { final private int statusCode; @@ -27,6 +25,8 @@ public class ApiResponse { final private T data; /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response */ @@ -35,6 +35,8 @@ public class ApiResponse { } /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response * @param data The object deserialized from response bod @@ -45,14 +47,29 @@ public class ApiResponse { this.data = data; } + /** + *

    Get the status code.

    + * + * @return the status code + */ public int getStatusCode() { return statusCode; } + /** + *

    Get the headers.

    + * + * @return a {@link java.util.Map} of headers + */ public Map> getHeaders() { return headers; } + /** + *

    Get the data.

    + * + * @return the data + */ public T getData() { return data; } diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java index dfe8cf3a0c2..2db2aaf44b4 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java @@ -59,6 +59,9 @@ import org.openapitools.client.auth.OAuth; import org.openapitools.client.auth.RetryingOAuth; import org.openapitools.client.auth.OAuthFlow; +/** + *

    ApiClient class.

    + */ public class ApiClient { private String basePath = "http://petstore.swagger.io:80/v2"; @@ -83,7 +86,7 @@ public class ApiClient { private HttpLoggingInterceptor loggingInterceptor; - /* + /** * Basic constructor for ApiClient */ public ApiClient() { @@ -99,8 +102,10 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object */ public ApiClient(OkHttpClient client) { init(); @@ -116,28 +121,28 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID */ public ApiClient(String clientId) { this(clientId, null, null); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID and additional parameters */ public ApiClient(String clientId, Map parameters) { this(clientId, null, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID, secret, and additional parameters */ public ApiClient(String clientId, String clientSecret, Map parameters) { this(null, clientId, clientSecret, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with base path, client ID, secret, and additional parameters */ public ApiClient(String basePath, String clientId, String clientSecret, Map parameters) { @@ -230,7 +235,7 @@ public class ApiClient { * * @param newHttpClient An instance of OkHttpClient * @return Api Client - * @throws NullPointerException when newHttpClient is null + * @throws java.lang.NullPointerException when newHttpClient is null */ public ApiClient setHttpClient(OkHttpClient newHttpClient) { this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); @@ -302,6 +307,11 @@ public class ApiClient { return this; } + /** + *

    Getter for the field keyManagers.

    + * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ public KeyManager[] getKeyManagers() { return keyManagers; } @@ -319,30 +329,65 @@ public class ApiClient { return this; } + /** + *

    Getter for the field dateFormat.

    + * + * @return a {@link java.text.DateFormat} object + */ public DateFormat getDateFormat() { return dateFormat; } + /** + *

    Setter for the field dateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setDateFormat(DateFormat dateFormat) { this.json.setDateFormat(dateFormat); return this; } + /** + *

    Set SqlDateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setSqlDateFormat(DateFormat dateFormat) { this.json.setSqlDateFormat(dateFormat); return this; } + /** + *

    Set OffsetDateTimeFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { this.json.setOffsetDateTimeFormat(dateFormat); return this; } + /** + *

    Set LocalDateFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { this.json.setLocalDateFormat(dateFormat); return this; } + /** + *

    Set LenientOnJson.

    + * + * @param lenientOnJson a boolean + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLenientOnJson(boolean lenientOnJson) { this.json.setLenientOnJson(lenientOnJson); return this; @@ -545,7 +590,7 @@ public class ApiClient { /** * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param connectionTimeout connection timeout in milliseconds * @return Api client @@ -567,7 +612,7 @@ public class ApiClient { /** * Sets the read timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param readTimeout read timeout in milliseconds * @return Api client @@ -589,7 +634,7 @@ public class ApiClient { /** * Sets the write timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param writeTimeout connection timeout in milliseconds * @return Api client @@ -837,7 +882,7 @@ public class ApiClient { * @param response HTTP response * @param returnType The type of the Java object * @return The deserialized Java object - * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * @throws org.openapitools.client.ApiException If fail to deserialize response body, i.e. cannot read response body * or the Content-Type of the response is not supported. */ @SuppressWarnings("unchecked") @@ -898,7 +943,7 @@ public class ApiClient { * @param obj The Java object * @param contentType The request Content-Type * @return The serialized request body - * @throws ApiException If fail to serialize the given object + * @throws org.openapitools.client.ApiException If fail to serialize the given object */ public RequestBody serialize(Object obj, String contentType) throws ApiException { if (obj instanceof byte[]) { @@ -924,7 +969,7 @@ public class ApiClient { * Download file from the given response. * * @param response An instance of the Response object - * @throws ApiException If fail to read file content from response and write to disk + * @throws org.openapitools.client.ApiException If fail to read file content from response and write to disk * @return Downloaded file */ public File downloadFileFromResponse(Response response) throws ApiException { @@ -944,7 +989,7 @@ public class ApiClient { * * @param response An instance of the Response object * @return Prepared file for the download - * @throws IOException If fail to prepare file for download + * @throws java.io.IOException If fail to prepare file for download */ public File prepareDownloadFile(Response response) throws IOException { String filename = null; @@ -988,7 +1033,7 @@ public class ApiClient { * @param Type * @param call An instance of the Call object * @return ApiResponse<T> - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call) throws ApiException { return execute(call, null); @@ -1003,7 +1048,7 @@ public class ApiClient { * @return ApiResponse object containing response status, headers and * data, which is a Java object deserialized from response body and would be null * when returnType is null. - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call, Type returnType) throws ApiException { try { @@ -1067,7 +1112,7 @@ public class ApiClient { * @param response Response * @param returnType Return type * @return Type - * @throws ApiException If the response has an unsuccessful status code or + * @throws org.openapitools.client.ApiException If the response has an unsuccessful status code or * fail to deserialize the response body */ public T handleResponse(Response response, Type returnType) throws ApiException { @@ -1113,7 +1158,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP call - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); @@ -1135,7 +1180,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP request - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiException.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiException.java index c814fc5bbc9..bd303bed5f9 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiException.java @@ -16,22 +16,47 @@ package org.openapitools.client; import java.util.Map; import java.util.List; +/** + *

    ApiException class.

    + */ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class ApiException extends Exception { private int code = 0; private Map> responseHeaders = null; private String responseBody = null; - + + /** + *

    Constructor for ApiException.

    + */ public ApiException() {} + /** + *

    Constructor for ApiException.

    + * + * @param throwable a {@link java.lang.Throwable} object + */ public ApiException(Throwable throwable) { super(throwable); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + */ public ApiException(String message) { super(message); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { super(message, throwable); this.code = code; @@ -39,23 +64,60 @@ public class ApiException extends Exception { this.responseBody = responseBody; } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, int code, Map> responseHeaders, String responseBody) { this(message, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { this(message, throwable, code, responseHeaders, null); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, Map> responseHeaders, String responseBody) { this((String) null, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ public ApiException(int code, String message) { super(message); this.code = code; } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, String message, Map> responseHeaders, String responseBody) { this(code, message); this.responseHeaders = responseHeaders; diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiResponse.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiResponse.java index 9bb5cac17b4..fb13945bd77 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiResponse.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiResponse.java @@ -18,8 +18,6 @@ import java.util.Map; /** * API response returned by API call. - * - * @param The type of data that is deserialized from response body */ public class ApiResponse { final private int statusCode; @@ -27,6 +25,8 @@ public class ApiResponse { final private T data; /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response */ @@ -35,6 +35,8 @@ public class ApiResponse { } /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response * @param data The object deserialized from response bod @@ -45,14 +47,29 @@ public class ApiResponse { this.data = data; } + /** + *

    Get the status code.

    + * + * @return the status code + */ public int getStatusCode() { return statusCode; } + /** + *

    Get the headers.

    + * + * @return a {@link java.util.Map} of headers + */ public Map> getHeaders() { return headers; } + /** + *

    Get the data.

    + * + * @return the data + */ public T getData() { return data; } diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java index dfe8cf3a0c2..2db2aaf44b4 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java @@ -59,6 +59,9 @@ import org.openapitools.client.auth.OAuth; import org.openapitools.client.auth.RetryingOAuth; import org.openapitools.client.auth.OAuthFlow; +/** + *

    ApiClient class.

    + */ public class ApiClient { private String basePath = "http://petstore.swagger.io:80/v2"; @@ -83,7 +86,7 @@ public class ApiClient { private HttpLoggingInterceptor loggingInterceptor; - /* + /** * Basic constructor for ApiClient */ public ApiClient() { @@ -99,8 +102,10 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object */ public ApiClient(OkHttpClient client) { init(); @@ -116,28 +121,28 @@ public class ApiClient { authentications = Collections.unmodifiableMap(authentications); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID */ public ApiClient(String clientId) { this(clientId, null, null); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID and additional parameters */ public ApiClient(String clientId, Map parameters) { this(clientId, null, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with client ID, secret, and additional parameters */ public ApiClient(String clientId, String clientSecret, Map parameters) { this(null, clientId, clientSecret, parameters); } - /* + /** * Constructor for ApiClient to support access token retry on 401/403 configured with base path, client ID, secret, and additional parameters */ public ApiClient(String basePath, String clientId, String clientSecret, Map parameters) { @@ -230,7 +235,7 @@ public class ApiClient { * * @param newHttpClient An instance of OkHttpClient * @return Api Client - * @throws NullPointerException when newHttpClient is null + * @throws java.lang.NullPointerException when newHttpClient is null */ public ApiClient setHttpClient(OkHttpClient newHttpClient) { this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); @@ -302,6 +307,11 @@ public class ApiClient { return this; } + /** + *

    Getter for the field keyManagers.

    + * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ public KeyManager[] getKeyManagers() { return keyManagers; } @@ -319,30 +329,65 @@ public class ApiClient { return this; } + /** + *

    Getter for the field dateFormat.

    + * + * @return a {@link java.text.DateFormat} object + */ public DateFormat getDateFormat() { return dateFormat; } + /** + *

    Setter for the field dateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setDateFormat(DateFormat dateFormat) { this.json.setDateFormat(dateFormat); return this; } + /** + *

    Set SqlDateFormat.

    + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setSqlDateFormat(DateFormat dateFormat) { this.json.setSqlDateFormat(dateFormat); return this; } + /** + *

    Set OffsetDateTimeFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { this.json.setOffsetDateTimeFormat(dateFormat); return this; } + /** + *

    Set LocalDateFormat.

    + * + * @param dateFormat a {@link org.threeten.bp.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { this.json.setLocalDateFormat(dateFormat); return this; } + /** + *

    Set LenientOnJson.

    + * + * @param lenientOnJson a boolean + * @return a {@link org.openapitools.client.ApiClient} object + */ public ApiClient setLenientOnJson(boolean lenientOnJson) { this.json.setLenientOnJson(lenientOnJson); return this; @@ -545,7 +590,7 @@ public class ApiClient { /** * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param connectionTimeout connection timeout in milliseconds * @return Api client @@ -567,7 +612,7 @@ public class ApiClient { /** * Sets the read timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param readTimeout read timeout in milliseconds * @return Api client @@ -589,7 +634,7 @@ public class ApiClient { /** * Sets the write timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and - * {@link Integer#MAX_VALUE}. + * {@link java.lang.Integer#MAX_VALUE}. * * @param writeTimeout connection timeout in milliseconds * @return Api client @@ -837,7 +882,7 @@ public class ApiClient { * @param response HTTP response * @param returnType The type of the Java object * @return The deserialized Java object - * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * @throws org.openapitools.client.ApiException If fail to deserialize response body, i.e. cannot read response body * or the Content-Type of the response is not supported. */ @SuppressWarnings("unchecked") @@ -898,7 +943,7 @@ public class ApiClient { * @param obj The Java object * @param contentType The request Content-Type * @return The serialized request body - * @throws ApiException If fail to serialize the given object + * @throws org.openapitools.client.ApiException If fail to serialize the given object */ public RequestBody serialize(Object obj, String contentType) throws ApiException { if (obj instanceof byte[]) { @@ -924,7 +969,7 @@ public class ApiClient { * Download file from the given response. * * @param response An instance of the Response object - * @throws ApiException If fail to read file content from response and write to disk + * @throws org.openapitools.client.ApiException If fail to read file content from response and write to disk * @return Downloaded file */ public File downloadFileFromResponse(Response response) throws ApiException { @@ -944,7 +989,7 @@ public class ApiClient { * * @param response An instance of the Response object * @return Prepared file for the download - * @throws IOException If fail to prepare file for download + * @throws java.io.IOException If fail to prepare file for download */ public File prepareDownloadFile(Response response) throws IOException { String filename = null; @@ -988,7 +1033,7 @@ public class ApiClient { * @param Type * @param call An instance of the Call object * @return ApiResponse<T> - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call) throws ApiException { return execute(call, null); @@ -1003,7 +1048,7 @@ public class ApiClient { * @return ApiResponse object containing response status, headers and * data, which is a Java object deserialized from response body and would be null * when returnType is null. - * @throws ApiException If fail to execute the call + * @throws org.openapitools.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call, Type returnType) throws ApiException { try { @@ -1067,7 +1112,7 @@ public class ApiClient { * @param response Response * @param returnType Return type * @return Type - * @throws ApiException If the response has an unsuccessful status code or + * @throws org.openapitools.client.ApiException If the response has an unsuccessful status code or * fail to deserialize the response body */ public T handleResponse(Response response, Type returnType) throws ApiException { @@ -1113,7 +1158,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP call - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); @@ -1135,7 +1180,7 @@ public class ApiClient { * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP request - * @throws ApiException If fail to serialize the request body object + * @throws org.openapitools.client.ApiException If fail to serialize the request body object */ public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiException.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiException.java index c814fc5bbc9..bd303bed5f9 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiException.java @@ -16,22 +16,47 @@ package org.openapitools.client; import java.util.Map; import java.util.List; +/** + *

    ApiException class.

    + */ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class ApiException extends Exception { private int code = 0; private Map> responseHeaders = null; private String responseBody = null; - + + /** + *

    Constructor for ApiException.

    + */ public ApiException() {} + /** + *

    Constructor for ApiException.

    + * + * @param throwable a {@link java.lang.Throwable} object + */ public ApiException(Throwable throwable) { super(throwable); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + */ public ApiException(String message) { super(message); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { super(message, throwable); this.code = code; @@ -39,23 +64,60 @@ public class ApiException extends Exception { this.responseBody = responseBody; } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(String message, int code, Map> responseHeaders, String responseBody) { this(message, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { this(message, throwable, code, responseHeaders, null); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, Map> responseHeaders, String responseBody) { this((String) null, (Throwable) null, code, responseHeaders, responseBody); } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ public ApiException(int code, String message) { super(message); this.code = code; } + /** + *

    Constructor for ApiException.

    + * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ public ApiException(int code, String message, Map> responseHeaders, String responseBody) { this(code, message); this.responseHeaders = responseHeaders; diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiResponse.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiResponse.java index 9bb5cac17b4..fb13945bd77 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiResponse.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiResponse.java @@ -18,8 +18,6 @@ import java.util.Map; /** * API response returned by API call. - * - * @param The type of data that is deserialized from response body */ public class ApiResponse { final private int statusCode; @@ -27,6 +25,8 @@ public class ApiResponse { final private T data; /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response */ @@ -35,6 +35,8 @@ public class ApiResponse { } /** + *

    Constructor for ApiResponse.

    + * * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response * @param data The object deserialized from response bod @@ -45,14 +47,29 @@ public class ApiResponse { this.data = data; } + /** + *

    Get the status code.

    + * + * @return the status code + */ public int getStatusCode() { return statusCode; } + /** + *

    Get the headers.

    + * + * @return a {@link java.util.Map} of headers + */ public Map> getHeaders() { return headers; } + /** + *

    Get the data.

    + * + * @return the data + */ public T getData() { return data; }