@goast/kotlin 0.5.9 → 0.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/client/okhttp3/ApiClient.kt +1 -2
- package/esm/src/ast/references/jackson.d.ts +8 -5
- package/esm/src/ast/references/jackson.d.ts.map +1 -1
- package/esm/src/ast/references/jackson.js +14 -6
- package/esm/src/config.d.ts +10 -0
- package/esm/src/config.d.ts.map +1 -1
- package/esm/src/config.js +1 -0
- package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +8 -4
- package/esm/src/generators/services/okhttp3-clients/okhttp3-clients-generator.d.ts.map +1 -1
- package/esm/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +22 -6
- package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
- package/esm/src/generators/services/spring-controllers/spring-controller-generator.js +14 -4
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +4 -1
- package/package.json +1 -1
- package/script/src/ast/references/jackson.d.ts +8 -5
- package/script/src/ast/references/jackson.d.ts.map +1 -1
- package/script/src/ast/references/jackson.js +20 -7
- package/script/src/config.d.ts +10 -0
- package/script/src/config.d.ts.map +1 -1
- package/script/src/config.js +1 -0
- package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +8 -4
- package/script/src/generators/services/okhttp3-clients/okhttp3-clients-generator.d.ts.map +1 -1
- package/script/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +22 -6
- package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
- package/script/src/generators/services/spring-controllers/spring-controller-generator.js +14 -4
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +4 -1
- package/src/src/ast/references/jackson.ts +34 -19
- package/src/src/config.ts +13 -0
- package/src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts +8 -4
- package/src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts +27 -8
- package/src/src/generators/services/spring-controllers/spring-controller-generator.ts +14 -4
- package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts +4 -1
|
@@ -14,7 +14,6 @@ import okhttp3.RequestBody
|
|
|
14
14
|
import okhttp3.RequestBody.Companion.asRequestBody
|
|
15
15
|
import okhttp3.RequestBody.Companion.toRequestBody
|
|
16
16
|
import okhttp3.ResponseBody
|
|
17
|
-
import okhttp3.internal.EMPTY_REQUEST
|
|
18
17
|
import java.io.File
|
|
19
18
|
import java.net.URLConnection
|
|
20
19
|
import java.time.LocalDate
|
|
@@ -106,7 +105,7 @@ open class ApiClient(@API_CLIENT_PARAMETERS@) {
|
|
|
106
105
|
|
|
107
106
|
mediaType == null || mediaType.startsWith("application/") && mediaType.endsWith("json") ->
|
|
108
107
|
if (content == null) {
|
|
109
|
-
|
|
108
|
+
ByteArray(0).toRequestBody(null)
|
|
110
109
|
} else {
|
|
111
110
|
objectMapper.writeValueAsString(content)
|
|
112
111
|
.toRequestBody((mediaType ?: JsonMediaType).toMediaTypeOrNull())
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SourceBuilder } from '@goast/core';
|
|
2
|
+
import type { SpringBootVersion } from '../../config.js';
|
|
3
|
+
import { type KtReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
4
|
export declare const jsonTypeInfo: KtReferenceFactory;
|
|
3
5
|
export declare const jsonSubTypes: KtReferenceFactory;
|
|
4
6
|
export declare const jsonClassDescription: KtReferenceFactory;
|
|
@@ -8,8 +10,9 @@ export declare const jsonInclude: KtReferenceFactory;
|
|
|
8
10
|
export declare const jsonIgnore: KtReferenceFactory;
|
|
9
11
|
export declare const jsonAnySetter: KtReferenceFactory;
|
|
10
12
|
export declare const jsonAnyGetter: KtReferenceFactory;
|
|
11
|
-
export declare const objectMapper:
|
|
12
|
-
export declare const serializationFeature:
|
|
13
|
-
export declare const deserializationFeature:
|
|
14
|
-
export declare const jacksonObjectMapper:
|
|
13
|
+
export declare const objectMapper: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
14
|
+
export declare const serializationFeature: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
15
|
+
export declare const deserializationFeature: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
16
|
+
export declare const jacksonObjectMapper: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
17
|
+
export declare const jacksonMapperBuilder: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
15
18
|
//# sourceMappingURL=jackson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jackson.d.ts","sourceRoot":"","sources":["../../../../src/src/ast/references/jackson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"jackson.d.ts","sourceRoot":"","sources":["../../../../src/src/ast/references/jackson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAe,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAY/F,eAAO,MAAM,YAAY,EAAE,kBAA4F,CAAC;AACxH,eAAO,MAAM,YAAY,EAAE,kBAA4F,CAAC;AACxH,eAAO,MAAM,oBAAoB,EAAE,kBAGlC,CAAC;AACF,eAAO,MAAM,YAAY,EAAE,kBAA4F,CAAC;AACxH,eAAO,MAAM,uBAAuB,EAAE,kBAGrC,CAAC;AACF,eAAO,MAAM,WAAW,EAAE,kBAA2F,CAAC;AACtH,eAAO,MAAM,UAAU,EAAE,kBAA0F,CAAC;AACpH,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AACF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,aAAa,sBACtC,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CAAyF,CAAC;AACjH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,aAAa,sBAC9C,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CACuE,CAAC;AAC/F,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,aAAa,sBAChD,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CACyE,CAAC;AAGjG,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,aAAa,sBAC7C,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CAC2E,CAAC;AACnG,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,aAAa,sBAC9C,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CAC4E,CAAC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { ktReference } from '../nodes/reference.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves a Jackson package name for the targeted Spring Boot version.
|
|
4
|
+
*
|
|
5
|
+
* Jackson 3 (the default in Spring Boot 4) moved every package **except annotations** from
|
|
6
|
+
* `com.fasterxml.jackson.*` to `tools.jackson.*`. Annotations stay on `com.fasterxml.jackson.annotation`.
|
|
7
|
+
*/
|
|
8
|
+
const jacksonPackage = (subPackage, springBootVersion) => `${springBootVersion === 4 ? 'tools.jackson' : 'com.fasterxml.jackson'}.${subPackage}`;
|
|
2
9
|
// com.fasterxml.jackson.annotation
|
|
3
10
|
export const jsonTypeInfo = ktReference.factory('JsonTypeInfo', 'com.fasterxml.jackson.annotation');
|
|
4
11
|
export const jsonSubTypes = ktReference.factory('JsonSubTypes', 'com.fasterxml.jackson.annotation');
|
|
@@ -9,9 +16,10 @@ export const jsonInclude = ktReference.factory('JsonInclude', 'com.fasterxml.jac
|
|
|
9
16
|
export const jsonIgnore = ktReference.factory('JsonIgnore', 'com.fasterxml.jackson.annotation');
|
|
10
17
|
export const jsonAnySetter = ktReference.factory('JsonAnySetter', 'com.fasterxml.jackson.annotation');
|
|
11
18
|
export const jsonAnyGetter = ktReference.factory('JsonAnyGetter', 'com.fasterxml.jackson.annotation');
|
|
12
|
-
// com.fasterxml.jackson.databind
|
|
13
|
-
export const objectMapper = ktReference
|
|
14
|
-
export const serializationFeature = ktReference
|
|
15
|
-
export const deserializationFeature = ktReference
|
|
16
|
-
// com.fasterxml.jackson.module.kotlin
|
|
17
|
-
export const jacksonObjectMapper = ktReference
|
|
19
|
+
// com.fasterxml.jackson.databind (Jackson 2) / tools.jackson.databind (Jackson 3, Spring Boot 4)
|
|
20
|
+
export const objectMapper = (springBootVersion = 3) => ktReference('ObjectMapper', jacksonPackage('databind', springBootVersion));
|
|
21
|
+
export const serializationFeature = (springBootVersion = 3) => ktReference('SerializationFeature', jacksonPackage('databind', springBootVersion));
|
|
22
|
+
export const deserializationFeature = (springBootVersion = 3) => ktReference('DeserializationFeature', jacksonPackage('databind', springBootVersion));
|
|
23
|
+
// com.fasterxml.jackson.module.kotlin (Jackson 2) / tools.jackson.module.kotlin (Jackson 3, Spring Boot 4)
|
|
24
|
+
export const jacksonObjectMapper = (springBootVersion = 3) => ktReference('jacksonObjectMapper', jacksonPackage('module.kotlin', springBootVersion));
|
|
25
|
+
export const jacksonMapperBuilder = (springBootVersion = 3) => ktReference('jacksonMapperBuilder', jacksonPackage('module.kotlin', springBootVersion));
|
package/esm/src/config.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { DefaultGenerationProviderConfig, OpenApiGeneratorConfig, StringCasing, StringCasingWithOptions } from '@goast/core';
|
|
2
|
+
/** The Spring Boot major version the Kotlin generators target. */
|
|
3
|
+
export type SpringBootVersion = 3 | 4;
|
|
2
4
|
export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
3
5
|
typeNameCasing: StringCasing | StringCasingWithOptions;
|
|
4
6
|
parameterNameCasing: StringCasing | StringCasingWithOptions;
|
|
@@ -12,6 +14,14 @@ export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
|
12
14
|
* @default false
|
|
13
15
|
*/
|
|
14
16
|
includeSourceInDocs: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The targeted Spring Boot major version. Controls Jackson package names, Kotlin generic bounds, and
|
|
19
|
+
* `ResponseEntity` nullability so the generated code compiles against the matching framework generation.
|
|
20
|
+
* - `3`: Spring Boot 3 (Spring Framework 6 / Jackson 2). Produces output identical to previous versions.
|
|
21
|
+
* - `4`: Spring Boot 4 (Spring Framework 7 / Jackson 3 / JSpecify null-safety).
|
|
22
|
+
* @default 3
|
|
23
|
+
*/
|
|
24
|
+
springBootVersion: SpringBootVersion;
|
|
15
25
|
};
|
|
16
26
|
export declare const defaultKotlinGeneratorConfig: DefaultGenerationProviderConfig<KotlinGeneratorConfig>;
|
|
17
27
|
//# sourceMappingURL=config.d.ts.map
|
package/esm/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,cAAc,EAAE,YAAY,GAAG,uBAAuB,CAAC;IACvD,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAE3D,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,cAAc,EAAE,YAAY,GAAG,uBAAuB,CAAC;IACvD,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAE3D,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,+BAA+B,CAAC,qBAAqB,CAwB/F,CAAC"}
|
package/esm/src/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okhttp3-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iCAAiC,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,mCAAmC,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAE3G,KAAK,OAAO,GAAG,mCAAmC,CAAC;AACnD,KAAK,MAAM,GAAG,kCAAkC,CAAC;AACjD,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrE,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6BAA8B,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpF,YAAW,sBAAsB;IAC1B,QAAQ,CAAC,GAAG,EAAE,mCAAmC,GAAG,YAAY,CAAC,MAAM,CAAC;IAkB/E,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAIzG,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"okhttp3-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iCAAiC,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,mCAAmC,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAE3G,KAAK,OAAO,GAAG,mCAAmC,CAAC;AACnD,KAAK,MAAM,GAAG,kCAAkC,CAAC;AACjD,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrE,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6BAA8B,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpF,YAAW,sBAAsB;IAC1B,QAAQ,CAAC,GAAG,EAAE,mCAAmC,GAAG,YAAY,CAAC,MAAM,CAAC;IAkB/E,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAIzG,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAwCrF,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;IAuB1G,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;IAUhH,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAwCzG,SAAS,CAAC,2BAA2B,CACnC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,2BAA2B,GACrC,gBAAgB,CAAC,OAAO,CAAC;IA+C5B,SAAS,CAAC,+BAA+B,CACvC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,+BAA+B,GACzC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAgCvB,SAAS,CAAC,mCAAmC,CAC3C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,mCAAmC,GAC7C,gBAAgB,CAAC,OAAO,CAAC;IA6B5B,SAAS,CAAC,oCAAoC,CAC5C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,oCAAoC,GAC9C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAuBvB,SAAS,CAAC,wCAAwC,CAChD,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,wCAAwC,GAClD,gBAAgB,CAAC,OAAO,CAAC;IAoF5B,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAchG,SAAS,CAAC,0BAA0B,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,IAAI,CAAC,0BAA0B,GACrC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;IAa5B,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;IAWvF,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;IAQ3F,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;IAY/G,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;IAQxF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,MAAM;IAO1E,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,GAAG,MAAM;IAgB7F,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,SAAS;IAM/F,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,SAAS;IAKxG,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,GAAG,6BAA6B,EAAE;IAmDtG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,MAAM;IAU3F,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,yBAAyB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAUlH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM;IAQpE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM;IAK3E,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM;IAKnE,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM;IAI9E,OAAO,CAAC,kBAAkB;CAgB3B"}
|
|
@@ -30,14 +30,18 @@ export class DefaultKotlinOkHttp3Generator extends KotlinFileGenerator {
|
|
|
30
30
|
],
|
|
31
31
|
extends: ctx.refs.apiClient(),
|
|
32
32
|
primaryConstructor: kt.constructor([
|
|
33
|
-
serializerAsParameter
|
|
33
|
+
serializerAsParameter
|
|
34
|
+
? kt.parameter('objectMapper', kt.refs.jackson.objectMapper(ctx.config.springBootVersion))
|
|
35
|
+
: null,
|
|
34
36
|
kt.parameter('basePath', kt.refs.string(), { default: 'defaultBasePath' }),
|
|
35
37
|
kt.parameter('client', kt.refs.okhttp3.okHttpClient(), {
|
|
36
38
|
default: 'defaultClient',
|
|
37
39
|
}),
|
|
38
|
-
serializerAsParameter
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
serializerAsParameter
|
|
41
|
+
? null
|
|
42
|
+
: kt.parameter('objectMapper', kt.refs.jackson.objectMapper(ctx.config.springBootVersion), {
|
|
43
|
+
default: kt.call([ctx.refs.serializer(), 'jacksonObjectMapper']),
|
|
44
|
+
}),
|
|
41
45
|
], null, {
|
|
42
46
|
delegateTarget: 'super',
|
|
43
47
|
delegateArguments: ['basePath', 'objectMapper', 'client'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okhttp3-clients-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGf,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,qCAAqC,EAGtC,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG3G,KAAK,KAAK,GAAG,kCAAkC,CAAC;AAChD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,aAAa,GAAG,kCAAkC,CAAC;AACxD,KAAK,OAAO,GAAG,oCAAoC,CAAC;AAEpD,qBAAa,6BAA8B,SAAQ,qCAAqC,CACtF,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,OAAO,CACR;IACC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAsC;gBAEnE,uBAAuB,CAAC,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;cAKhD,uBAAuB,CAAC,GAAG,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1G,SAAS,CAAC,UAAU,IAAI,MAAM;IAQ9B,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC;IAQzF,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI1F,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,uBAAuB,CAAC,4BAA4B,CAAC,EAC9D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,GACnC,OAAO;IAUV,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAc9D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;YAKlC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"okhttp3-clients-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGf,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,qCAAqC,EAGtC,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG3G,KAAK,KAAK,GAAG,kCAAkC,CAAC;AAChD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,aAAa,GAAG,kCAAkC,CAAC;AACxD,KAAK,OAAO,GAAG,oCAAoC,CAAC;AAEpD,qBAAa,6BAA8B,SAAQ,qCAAqC,CACtF,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,OAAO,CACR;IACC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAsC;gBAEnE,uBAAuB,CAAC,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;cAKhD,uBAAuB,CAAC,GAAG,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1G,SAAS,CAAC,UAAU,IAAI,MAAM;IAQ9B,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC;IAQzF,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI1F,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,uBAAuB,CAAC,4BAA4B,CAAC,EAC9D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,GACnC,OAAO;IAUV,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAc9D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;YAKlC,uBAAuB;CAkFtC"}
|
|
@@ -85,25 +85,41 @@ export class KotlinOkHttp3ClientsGenerator extends OpenApiServicesGenerationProv
|
|
|
85
85
|
? 'val baseUrl: String, val objectMapper: ObjectMapper, val client: Factory = defaultClient'
|
|
86
86
|
: 'val baseUrl: String, val client: Factory = defaultClient, val objectMapper: ObjectMapper = Serializer.jacksonObjectMapper');
|
|
87
87
|
}
|
|
88
|
+
if (ctx.config.springBootVersion === 4) {
|
|
89
|
+
// Jackson 3 (Spring Boot 4) moved every package except annotations from
|
|
90
|
+
// `com.fasterxml.jackson.*` to `tools.jackson.*`. Rewrite the imports in the copied assets to match.
|
|
91
|
+
fileContent = fileContent.replace(/\bcom\.fasterxml\.jackson\.(core|databind|module|datatype|dataformat)\b/g, 'tools.jackson.$1');
|
|
92
|
+
}
|
|
88
93
|
writeGeneratedFile(ctx.config, targetPath, fileContent);
|
|
89
94
|
}
|
|
90
95
|
if (ctx.config.serializer === 'static' ||
|
|
91
96
|
typeof ctx.config.serializer === 'object' && ctx.config.serializer.mode === 'static') {
|
|
92
97
|
const filePath = resolve(targetDir, 'Serializer.kt');
|
|
93
98
|
console.log(`Generating Serializer to ${filePath}...`);
|
|
99
|
+
const springBootVersion = ctx.config.springBootVersion;
|
|
100
|
+
const jsonIncludeMember = toCasing(ctx.config.serializerJsonInclude, 'snake');
|
|
101
|
+
const defaultFactory = springBootVersion === 4
|
|
102
|
+
// Jackson 3's ObjectMapper is immutable; configuration moved to the (Kotlin) mapper builder.
|
|
103
|
+
? s `${kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${s.indent `
|
|
104
|
+
.findAndAddModules()
|
|
105
|
+
.changeDefaultPropertyInclusion { it.withValueInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
|
|
106
|
+
.configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
107
|
+
.configure(${kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
|
108
|
+
.build()`}`
|
|
109
|
+
: s `${kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${s.indent `
|
|
110
|
+
.findAndRegisterModules()
|
|
111
|
+
.setSerializationInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
|
|
112
|
+
.configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
113
|
+
.configure(${kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
94
114
|
const factory = typeof ctx.config.serializer === 'object'
|
|
95
115
|
? ctx.config.serializer.factory
|
|
96
|
-
:
|
|
97
|
-
.findAndRegisterModules()
|
|
98
|
-
.setSerializationInclusion(${kt.refs.jackson.jsonInclude()}.Include.${toCasing(ctx.config.serializerJsonInclude, 'snake')})
|
|
99
|
-
.configure(${kt.refs.jackson.serializationFeature()}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
100
|
-
.configure(${kt.refs.jackson.deserializationFeature()}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
116
|
+
: defaultFactory;
|
|
101
117
|
const builder = new KotlinFileBuilder(ctx.infrastructurePackageName, ctx.config);
|
|
102
118
|
builder.append(kt.object({
|
|
103
119
|
name: 'Serializer',
|
|
104
120
|
members: [
|
|
105
121
|
kt.property('jacksonObjectMapper', {
|
|
106
|
-
type: kt.refs.jackson.objectMapper(),
|
|
122
|
+
type: kt.refs.jackson.objectMapper(ctx.config.springBootVersion),
|
|
107
123
|
mutable: false,
|
|
108
124
|
default: kt.call('run', [kt.lambda([], factory)]),
|
|
109
125
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-controller-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-controllers/spring-controller-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,0CAA0C,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE/F,KAAK,OAAO,GAAG,6BAA6B,CAAC;AAC7C,KAAK,MAAM,GAAG,4BAA4B,CAAC;AAC3C,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAIjC,MAAM,WAAW,+BAA+B,CAC9C,OAAO,SAAS,MAAM,GAAG,MAAM;IAE/B,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,sCAAuC,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAC7F,YAAW,+BAA+B;IACnC,QAAQ,CACb,GAAG,EAAE,6BAA6B,GACjC,YAAY,CAAC,4BAA4B,CAAC;IA4B7C,SAAS,CAAC,wBAAwB,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,wBAAwB,GAClC,YAAY;IAgBf,SAAS,CAAC,0BAA0B,CAClC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,0BAA0B,GACpC,gBAAgB,CAAC,OAAO,CAAC;IAQ5B,SAAS,CAAC,eAAe,CACvB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,eAAe,GACzB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;IAiBxB,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IAQ5E,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;IAgC7E,SAAS,CAAC,6BAA6B,CACrC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,6BAA6B,GACvC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAiBvB,SAAS,CAAC,yCAAyC,CACjD,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,GACpB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IA0H3B,SAAS,CAAC,sCAAsC,CAC9C,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,6BAA6B,GACvC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;IAsHxB,SAAS,CAAC,iCAAiC,CACzC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,6BAA6B,EAAE,GAC1C,gBAAgB,CAAC,OAAO,CAAC;IA4C5B,SAAS,CAAC,yBAAyB,CACjC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,yBAAyB,GACnC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-controller-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-controllers/spring-controller-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -270,11 +270,15 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
|
|
|
270
270
|
getApiResponseEntityClass(ctx, args) {
|
|
271
271
|
const { endpoint } = args;
|
|
272
272
|
const name = this.getApiResponseEntityName(ctx, { endpoint });
|
|
273
|
+
// Spring 7's `ResponseEntity<T>` carries an `Any` upper bound (JSpecify), so the subclass must bound `T`.
|
|
274
|
+
// The body parameter is then made nullable (`T?`) to keep null-body ("no response body") responses legal
|
|
275
|
+
// while staying wire-identical, since Spring's super constructor accepts a `@Nullable T body`.
|
|
276
|
+
const springBoot4 = ctx.config.springBootVersion === 4;
|
|
273
277
|
return kt.class(name, {
|
|
274
278
|
doc: kt.doc(`Response entity for ${endpoint.name}.`),
|
|
275
|
-
generics: [kt.genericParameter('T')],
|
|
279
|
+
generics: [kt.genericParameter('T', springBoot4 ? { constraint: kt.refs.any() } : undefined)],
|
|
276
280
|
primaryConstructor: kt.constructor([
|
|
277
|
-
kt.parameter.class('body', kt.reference('T')),
|
|
281
|
+
kt.parameter.class('body', kt.reference('T', null, springBoot4 ? { nullable: true } : undefined)),
|
|
278
282
|
kt.parameter.class('rawStatus', kt.refs.int()),
|
|
279
283
|
kt.parameter.class('headers', kt.refs.spring.multiValueMap([kt.refs.string(), kt.refs.string()], {
|
|
280
284
|
nullable: true,
|
|
@@ -310,7 +314,11 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
|
|
|
310
314
|
body: kt.call([
|
|
311
315
|
kt.reference(this.getApiResponseEntityName(ctx, { endpoint }), null, {
|
|
312
316
|
generics: [
|
|
313
|
-
hasResponseBody
|
|
317
|
+
hasResponseBody
|
|
318
|
+
? responseType
|
|
319
|
+
// `Unit?` violates the `T : Any` bound under Spring Boot 4; the `null` body argument
|
|
320
|
+
// below stays (now legal because the subclass body parameter is nullable).
|
|
321
|
+
: (springBoot4 ? kt.refs.unit() : kt.refs.unit({ nullable: true })),
|
|
314
322
|
],
|
|
315
323
|
}),
|
|
316
324
|
], [
|
|
@@ -526,7 +534,9 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
|
|
|
526
534
|
return kt.refs.unit();
|
|
527
535
|
}
|
|
528
536
|
else {
|
|
529
|
-
|
|
537
|
+
// Under Spring Boot 4, this type flows into `ResponseEntity<T : Any>` (e.g. the delegate default methods),
|
|
538
|
+
// so the ambiguous/unknown-body fallback must be non-null `Any` rather than `Any?`.
|
|
539
|
+
return ctx.config.springBootVersion === 4 ? kt.refs.any() : kt.refs.any({ nullable: true });
|
|
530
540
|
}
|
|
531
541
|
}
|
|
532
542
|
getTypeUsage(ctx, args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iDAAiD,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EACV,6CAA6C,EAC7C,4CAA4C,EAC7C,MAAM,aAAa,CAAC;AAErB,KAAK,OAAO,GAAG,6CAA6C,CAAC;AAC7D,KAAK,MAAM,GAAG,4CAA4C,CAAC;AAC3D,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sCAAsC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrF,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6CAA8C,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpG,YAAW,sCAAsC;IAC1C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;IAoBnD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAKxG,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;IAS3F,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAYrG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,MAAM;IAK3F,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAoBjG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA6B9G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,7 +83,10 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
83
83
|
return kt.function(functionName, {
|
|
84
84
|
doc: kt.doc(this.getEndpointDocDescription(ctx, { endpoint })),
|
|
85
85
|
suspend: true,
|
|
86
|
-
|
|
86
|
+
// Spring 7's `WebClient.exchangeToMono` is `<V : Any>`, so the `<T>` overloads need an `Any` bound to infer.
|
|
87
|
+
generics: [
|
|
88
|
+
kt.genericParameter('T', ctx.config.springBootVersion === 4 ? { constraint: kt.refs.any() } : undefined),
|
|
89
|
+
],
|
|
87
90
|
receiverType: kt.refs.springReactive.webClient(),
|
|
88
91
|
parameters: [
|
|
89
92
|
...parameters.map((parameter) => kt.parameter(toCasing(parameter.name, ctx.config.parameterNameCasing), this.getParameterType(ctx, { endpoint, parameter }), { default: this.getParameterDefaultValue(ctx, { endpoint, parameter }) })),
|
package/package.json
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SourceBuilder } from '@goast/core';
|
|
2
|
+
import type { SpringBootVersion } from '../../config.js';
|
|
3
|
+
import { type KtReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
4
|
export declare const jsonTypeInfo: KtReferenceFactory;
|
|
3
5
|
export declare const jsonSubTypes: KtReferenceFactory;
|
|
4
6
|
export declare const jsonClassDescription: KtReferenceFactory;
|
|
@@ -8,8 +10,9 @@ export declare const jsonInclude: KtReferenceFactory;
|
|
|
8
10
|
export declare const jsonIgnore: KtReferenceFactory;
|
|
9
11
|
export declare const jsonAnySetter: KtReferenceFactory;
|
|
10
12
|
export declare const jsonAnyGetter: KtReferenceFactory;
|
|
11
|
-
export declare const objectMapper:
|
|
12
|
-
export declare const serializationFeature:
|
|
13
|
-
export declare const deserializationFeature:
|
|
14
|
-
export declare const jacksonObjectMapper:
|
|
13
|
+
export declare const objectMapper: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
14
|
+
export declare const serializationFeature: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
15
|
+
export declare const deserializationFeature: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
16
|
+
export declare const jacksonObjectMapper: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
17
|
+
export declare const jacksonMapperBuilder: <TBuilder extends SourceBuilder>(springBootVersion?: SpringBootVersion) => KtReference<TBuilder>;
|
|
15
18
|
//# sourceMappingURL=jackson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jackson.d.ts","sourceRoot":"","sources":["../../../../src/src/ast/references/jackson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"jackson.d.ts","sourceRoot":"","sources":["../../../../src/src/ast/references/jackson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAe,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAY/F,eAAO,MAAM,YAAY,EAAE,kBAA4F,CAAC;AACxH,eAAO,MAAM,YAAY,EAAE,kBAA4F,CAAC;AACxH,eAAO,MAAM,oBAAoB,EAAE,kBAGlC,CAAC;AACF,eAAO,MAAM,YAAY,EAAE,kBAA4F,CAAC;AACxH,eAAO,MAAM,uBAAuB,EAAE,kBAGrC,CAAC;AACF,eAAO,MAAM,WAAW,EAAE,kBAA2F,CAAC;AACtH,eAAO,MAAM,UAAU,EAAE,kBAA0F,CAAC;AACpH,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AACF,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,aAAa,sBACtC,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CAAyF,CAAC;AACjH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,aAAa,sBAC9C,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CACuE,CAAC;AAC/F,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,aAAa,sBAChD,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CACyE,CAAC;AAGjG,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,aAAa,sBAC7C,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CAC2E,CAAC;AACnG,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,aAAa,sBAC9C,iBAAiB,KACnC,WAAW,CAAC,QAAQ,CAC4E,CAAC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jacksonObjectMapper = exports.deserializationFeature = exports.serializationFeature = exports.objectMapper = exports.jsonAnyGetter = exports.jsonAnySetter = exports.jsonIgnore = exports.jsonInclude = exports.jsonPropertyDescription = exports.jsonProperty = exports.jsonClassDescription = exports.jsonSubTypes = exports.jsonTypeInfo = void 0;
|
|
3
|
+
exports.jacksonMapperBuilder = exports.jacksonObjectMapper = exports.deserializationFeature = exports.serializationFeature = exports.objectMapper = exports.jsonAnyGetter = exports.jsonAnySetter = exports.jsonIgnore = exports.jsonInclude = exports.jsonPropertyDescription = exports.jsonProperty = exports.jsonClassDescription = exports.jsonSubTypes = exports.jsonTypeInfo = void 0;
|
|
4
4
|
const reference_js_1 = require("../nodes/reference.js");
|
|
5
|
+
/**
|
|
6
|
+
* Resolves a Jackson package name for the targeted Spring Boot version.
|
|
7
|
+
*
|
|
8
|
+
* Jackson 3 (the default in Spring Boot 4) moved every package **except annotations** from
|
|
9
|
+
* `com.fasterxml.jackson.*` to `tools.jackson.*`. Annotations stay on `com.fasterxml.jackson.annotation`.
|
|
10
|
+
*/
|
|
11
|
+
const jacksonPackage = (subPackage, springBootVersion) => `${springBootVersion === 4 ? 'tools.jackson' : 'com.fasterxml.jackson'}.${subPackage}`;
|
|
5
12
|
// com.fasterxml.jackson.annotation
|
|
6
13
|
exports.jsonTypeInfo = reference_js_1.ktReference.factory('JsonTypeInfo', 'com.fasterxml.jackson.annotation');
|
|
7
14
|
exports.jsonSubTypes = reference_js_1.ktReference.factory('JsonSubTypes', 'com.fasterxml.jackson.annotation');
|
|
@@ -12,9 +19,15 @@ exports.jsonInclude = reference_js_1.ktReference.factory('JsonInclude', 'com.fas
|
|
|
12
19
|
exports.jsonIgnore = reference_js_1.ktReference.factory('JsonIgnore', 'com.fasterxml.jackson.annotation');
|
|
13
20
|
exports.jsonAnySetter = reference_js_1.ktReference.factory('JsonAnySetter', 'com.fasterxml.jackson.annotation');
|
|
14
21
|
exports.jsonAnyGetter = reference_js_1.ktReference.factory('JsonAnyGetter', 'com.fasterxml.jackson.annotation');
|
|
15
|
-
// com.fasterxml.jackson.databind
|
|
16
|
-
|
|
17
|
-
exports.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
// com.fasterxml.jackson.databind (Jackson 2) / tools.jackson.databind (Jackson 3, Spring Boot 4)
|
|
23
|
+
const objectMapper = (springBootVersion = 3) => (0, reference_js_1.ktReference)('ObjectMapper', jacksonPackage('databind', springBootVersion));
|
|
24
|
+
exports.objectMapper = objectMapper;
|
|
25
|
+
const serializationFeature = (springBootVersion = 3) => (0, reference_js_1.ktReference)('SerializationFeature', jacksonPackage('databind', springBootVersion));
|
|
26
|
+
exports.serializationFeature = serializationFeature;
|
|
27
|
+
const deserializationFeature = (springBootVersion = 3) => (0, reference_js_1.ktReference)('DeserializationFeature', jacksonPackage('databind', springBootVersion));
|
|
28
|
+
exports.deserializationFeature = deserializationFeature;
|
|
29
|
+
// com.fasterxml.jackson.module.kotlin (Jackson 2) / tools.jackson.module.kotlin (Jackson 3, Spring Boot 4)
|
|
30
|
+
const jacksonObjectMapper = (springBootVersion = 3) => (0, reference_js_1.ktReference)('jacksonObjectMapper', jacksonPackage('module.kotlin', springBootVersion));
|
|
31
|
+
exports.jacksonObjectMapper = jacksonObjectMapper;
|
|
32
|
+
const jacksonMapperBuilder = (springBootVersion = 3) => (0, reference_js_1.ktReference)('jacksonMapperBuilder', jacksonPackage('module.kotlin', springBootVersion));
|
|
33
|
+
exports.jacksonMapperBuilder = jacksonMapperBuilder;
|
package/script/src/config.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { DefaultGenerationProviderConfig, OpenApiGeneratorConfig, StringCasing, StringCasingWithOptions } from '@goast/core';
|
|
2
|
+
/** The Spring Boot major version the Kotlin generators target. */
|
|
3
|
+
export type SpringBootVersion = 3 | 4;
|
|
2
4
|
export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
3
5
|
typeNameCasing: StringCasing | StringCasingWithOptions;
|
|
4
6
|
parameterNameCasing: StringCasing | StringCasingWithOptions;
|
|
@@ -12,6 +14,14 @@ export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
|
12
14
|
* @default false
|
|
13
15
|
*/
|
|
14
16
|
includeSourceInDocs: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The targeted Spring Boot major version. Controls Jackson package names, Kotlin generic bounds, and
|
|
19
|
+
* `ResponseEntity` nullability so the generated code compiles against the matching framework generation.
|
|
20
|
+
* - `3`: Spring Boot 3 (Spring Framework 6 / Jackson 2). Produces output identical to previous versions.
|
|
21
|
+
* - `4`: Spring Boot 4 (Spring Framework 7 / Jackson 3 / JSpecify null-safety).
|
|
22
|
+
* @default 3
|
|
23
|
+
*/
|
|
24
|
+
springBootVersion: SpringBootVersion;
|
|
15
25
|
};
|
|
16
26
|
export declare const defaultKotlinGeneratorConfig: DefaultGenerationProviderConfig<KotlinGeneratorConfig>;
|
|
17
27
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,cAAc,EAAE,YAAY,GAAG,uBAAuB,CAAC;IACvD,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAE3D,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,cAAc,EAAE,YAAY,GAAG,uBAAuB,CAAC;IACvD,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC3D,mBAAmB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAC5D,kBAAkB,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAE3D,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,+BAA+B,CAAC,qBAAqB,CAwB/F,CAAC"}
|
package/script/src/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okhttp3-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iCAAiC,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,mCAAmC,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAE3G,KAAK,OAAO,GAAG,mCAAmC,CAAC;AACnD,KAAK,MAAM,GAAG,kCAAkC,CAAC;AACjD,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrE,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6BAA8B,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpF,YAAW,sBAAsB;IAC1B,QAAQ,CAAC,GAAG,EAAE,mCAAmC,GAAG,YAAY,CAAC,MAAM,CAAC;IAkB/E,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAIzG,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"okhttp3-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,14 +33,18 @@ class DefaultKotlinOkHttp3Generator extends file_generator_js_1.KotlinFileGenera
|
|
|
33
33
|
],
|
|
34
34
|
extends: ctx.refs.apiClient(),
|
|
35
35
|
primaryConstructor: index_js_1.kt.constructor([
|
|
36
|
-
serializerAsParameter
|
|
36
|
+
serializerAsParameter
|
|
37
|
+
? index_js_1.kt.parameter('objectMapper', index_js_1.kt.refs.jackson.objectMapper(ctx.config.springBootVersion))
|
|
38
|
+
: null,
|
|
37
39
|
index_js_1.kt.parameter('basePath', index_js_1.kt.refs.string(), { default: 'defaultBasePath' }),
|
|
38
40
|
index_js_1.kt.parameter('client', index_js_1.kt.refs.okhttp3.okHttpClient(), {
|
|
39
41
|
default: 'defaultClient',
|
|
40
42
|
}),
|
|
41
|
-
serializerAsParameter
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
serializerAsParameter
|
|
44
|
+
? null
|
|
45
|
+
: index_js_1.kt.parameter('objectMapper', index_js_1.kt.refs.jackson.objectMapper(ctx.config.springBootVersion), {
|
|
46
|
+
default: index_js_1.kt.call([ctx.refs.serializer(), 'jacksonObjectMapper']),
|
|
47
|
+
}),
|
|
44
48
|
], null, {
|
|
45
49
|
delegateTarget: 'super',
|
|
46
50
|
delegateArguments: ['basePath', 'objectMapper', 'client'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okhttp3-clients-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGf,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,qCAAqC,EAGtC,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG3G,KAAK,KAAK,GAAG,kCAAkC,CAAC;AAChD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,aAAa,GAAG,kCAAkC,CAAC;AACxD,KAAK,OAAO,GAAG,oCAAoC,CAAC;AAEpD,qBAAa,6BAA8B,SAAQ,qCAAqC,CACtF,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,OAAO,CACR;IACC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAsC;gBAEnE,uBAAuB,CAAC,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;cAKhD,uBAAuB,CAAC,GAAG,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1G,SAAS,CAAC,UAAU,IAAI,MAAM;IAQ9B,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC;IAQzF,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI1F,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,uBAAuB,CAAC,4BAA4B,CAAC,EAC9D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,GACnC,OAAO;IAUV,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAc9D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;YAKlC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"okhttp3-clients-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGf,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,qCAAqC,EAGtC,MAAM,aAAa,CAAC;AAKrB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG3G,KAAK,KAAK,GAAG,kCAAkC,CAAC;AAChD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,MAAM,GAAG,mCAAmC,CAAC;AAClD,KAAK,aAAa,GAAG,kCAAkC,CAAC;AACxD,KAAK,OAAO,GAAG,oCAAoC,CAAC;AAEpD,qBAAa,6BAA8B,SAAQ,qCAAqC,CACtF,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,OAAO,CACR;IACC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAsC;gBAEnE,uBAAuB,CAAC,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;cAKhD,uBAAuB,CAAC,GAAG,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1G,SAAS,CAAC,UAAU,IAAI,MAAM;IAQ9B,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC;IAQzF,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI1F,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,uBAAuB,CAAC,4BAA4B,CAAC,EAC9D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,GACnC,OAAO;IAUV,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAc9D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;YAKlC,uBAAuB;CAkFtC"}
|
|
@@ -88,25 +88,41 @@ class KotlinOkHttp3ClientsGenerator extends core_1.OpenApiServicesGenerationProv
|
|
|
88
88
|
? 'val baseUrl: String, val objectMapper: ObjectMapper, val client: Factory = defaultClient'
|
|
89
89
|
: 'val baseUrl: String, val client: Factory = defaultClient, val objectMapper: ObjectMapper = Serializer.jacksonObjectMapper');
|
|
90
90
|
}
|
|
91
|
+
if (ctx.config.springBootVersion === 4) {
|
|
92
|
+
// Jackson 3 (Spring Boot 4) moved every package except annotations from
|
|
93
|
+
// `com.fasterxml.jackson.*` to `tools.jackson.*`. Rewrite the imports in the copied assets to match.
|
|
94
|
+
fileContent = fileContent.replace(/\bcom\.fasterxml\.jackson\.(core|databind|module|datatype|dataformat)\b/g, 'tools.jackson.$1');
|
|
95
|
+
}
|
|
91
96
|
(0, core_1.writeGeneratedFile)(ctx.config, targetPath, fileContent);
|
|
92
97
|
}
|
|
93
98
|
if (ctx.config.serializer === 'static' ||
|
|
94
99
|
typeof ctx.config.serializer === 'object' && ctx.config.serializer.mode === 'static') {
|
|
95
100
|
const filePath = (0, node_path_1.resolve)(targetDir, 'Serializer.kt');
|
|
96
101
|
console.log(`Generating Serializer to ${filePath}...`);
|
|
102
|
+
const springBootVersion = ctx.config.springBootVersion;
|
|
103
|
+
const jsonIncludeMember = (0, core_1.toCasing)(ctx.config.serializerJsonInclude, 'snake');
|
|
104
|
+
const defaultFactory = springBootVersion === 4
|
|
105
|
+
// Jackson 3's ObjectMapper is immutable; configuration moved to the (Kotlin) mapper builder.
|
|
106
|
+
? (0, core_1.builderTemplate) `${index_js_1.kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${core_1.builderTemplate.indent `
|
|
107
|
+
.findAndAddModules()
|
|
108
|
+
.changeDefaultPropertyInclusion { it.withValueInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
|
|
109
|
+
.configure(${index_js_1.kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
110
|
+
.configure(${index_js_1.kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
|
111
|
+
.build()`}`
|
|
112
|
+
: (0, core_1.builderTemplate) `${index_js_1.kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${core_1.builderTemplate.indent `
|
|
113
|
+
.findAndRegisterModules()
|
|
114
|
+
.setSerializationInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
|
|
115
|
+
.configure(${index_js_1.kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
116
|
+
.configure(${index_js_1.kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
97
117
|
const factory = typeof ctx.config.serializer === 'object'
|
|
98
118
|
? ctx.config.serializer.factory
|
|
99
|
-
:
|
|
100
|
-
.findAndRegisterModules()
|
|
101
|
-
.setSerializationInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${(0, core_1.toCasing)(ctx.config.serializerJsonInclude, 'snake')})
|
|
102
|
-
.configure(${index_js_1.kt.refs.jackson.serializationFeature()}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
103
|
-
.configure(${index_js_1.kt.refs.jackson.deserializationFeature()}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
119
|
+
: defaultFactory;
|
|
104
120
|
const builder = new file_builder_js_1.KotlinFileBuilder(ctx.infrastructurePackageName, ctx.config);
|
|
105
121
|
builder.append(index_js_1.kt.object({
|
|
106
122
|
name: 'Serializer',
|
|
107
123
|
members: [
|
|
108
124
|
index_js_1.kt.property('jacksonObjectMapper', {
|
|
109
|
-
type: index_js_1.kt.refs.jackson.objectMapper(),
|
|
125
|
+
type: index_js_1.kt.refs.jackson.objectMapper(ctx.config.springBootVersion),
|
|
110
126
|
mutable: false,
|
|
111
127
|
default: index_js_1.kt.call('run', [index_js_1.kt.lambda([], factory)]),
|
|
112
128
|
}),
|
package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-controller-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-controllers/spring-controller-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,0CAA0C,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE/F,KAAK,OAAO,GAAG,6BAA6B,CAAC;AAC7C,KAAK,MAAM,GAAG,4BAA4B,CAAC;AAC3C,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAIjC,MAAM,WAAW,+BAA+B,CAC9C,OAAO,SAAS,MAAM,GAAG,MAAM;IAE/B,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,sCAAuC,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAC7F,YAAW,+BAA+B;IACnC,QAAQ,CACb,GAAG,EAAE,6BAA6B,GACjC,YAAY,CAAC,4BAA4B,CAAC;IA4B7C,SAAS,CAAC,wBAAwB,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,wBAAwB,GAClC,YAAY;IAgBf,SAAS,CAAC,0BAA0B,CAClC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,0BAA0B,GACpC,gBAAgB,CAAC,OAAO,CAAC;IAQ5B,SAAS,CAAC,eAAe,CACvB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,eAAe,GACzB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;IAiBxB,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IAQ5E,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;IAgC7E,SAAS,CAAC,6BAA6B,CACrC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,6BAA6B,GACvC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAiBvB,SAAS,CAAC,yCAAyC,CACjD,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,GACpB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IA0H3B,SAAS,CAAC,sCAAsC,CAC9C,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,6BAA6B,GACvC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;IAsHxB,SAAS,CAAC,iCAAiC,CACzC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,6BAA6B,EAAE,GAC1C,gBAAgB,CAAC,OAAO,CAAC;IA4C5B,SAAS,CAAC,yBAAyB,CACjC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,yBAAyB,GACnC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-controller-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-controllers/spring-controller-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -274,11 +274,15 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_js_1.KotlinF
|
|
|
274
274
|
getApiResponseEntityClass(ctx, args) {
|
|
275
275
|
const { endpoint } = args;
|
|
276
276
|
const name = this.getApiResponseEntityName(ctx, { endpoint });
|
|
277
|
+
// Spring 7's `ResponseEntity<T>` carries an `Any` upper bound (JSpecify), so the subclass must bound `T`.
|
|
278
|
+
// The body parameter is then made nullable (`T?`) to keep null-body ("no response body") responses legal
|
|
279
|
+
// while staying wire-identical, since Spring's super constructor accepts a `@Nullable T body`.
|
|
280
|
+
const springBoot4 = ctx.config.springBootVersion === 4;
|
|
277
281
|
return index_js_1.kt.class(name, {
|
|
278
282
|
doc: index_js_1.kt.doc(`Response entity for ${endpoint.name}.`),
|
|
279
|
-
generics: [index_js_1.kt.genericParameter('T')],
|
|
283
|
+
generics: [index_js_1.kt.genericParameter('T', springBoot4 ? { constraint: index_js_1.kt.refs.any() } : undefined)],
|
|
280
284
|
primaryConstructor: index_js_1.kt.constructor([
|
|
281
|
-
index_js_1.kt.parameter.class('body', index_js_1.kt.reference('T')),
|
|
285
|
+
index_js_1.kt.parameter.class('body', index_js_1.kt.reference('T', null, springBoot4 ? { nullable: true } : undefined)),
|
|
282
286
|
index_js_1.kt.parameter.class('rawStatus', index_js_1.kt.refs.int()),
|
|
283
287
|
index_js_1.kt.parameter.class('headers', index_js_1.kt.refs.spring.multiValueMap([index_js_1.kt.refs.string(), index_js_1.kt.refs.string()], {
|
|
284
288
|
nullable: true,
|
|
@@ -314,7 +318,11 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_js_1.KotlinF
|
|
|
314
318
|
body: index_js_1.kt.call([
|
|
315
319
|
index_js_1.kt.reference(this.getApiResponseEntityName(ctx, { endpoint }), null, {
|
|
316
320
|
generics: [
|
|
317
|
-
hasResponseBody
|
|
321
|
+
hasResponseBody
|
|
322
|
+
? responseType
|
|
323
|
+
// `Unit?` violates the `T : Any` bound under Spring Boot 4; the `null` body argument
|
|
324
|
+
// below stays (now legal because the subclass body parameter is nullable).
|
|
325
|
+
: (springBoot4 ? index_js_1.kt.refs.unit() : index_js_1.kt.refs.unit({ nullable: true })),
|
|
318
326
|
],
|
|
319
327
|
}),
|
|
320
328
|
], [
|
|
@@ -530,7 +538,9 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_js_1.KotlinF
|
|
|
530
538
|
return index_js_1.kt.refs.unit();
|
|
531
539
|
}
|
|
532
540
|
else {
|
|
533
|
-
|
|
541
|
+
// Under Spring Boot 4, this type flows into `ResponseEntity<T : Any>` (e.g. the delegate default methods),
|
|
542
|
+
// so the ambiguous/unknown-body fallback must be non-null `Any` rather than `Any?`.
|
|
543
|
+
return ctx.config.springBootVersion === 4 ? index_js_1.kt.refs.any() : index_js_1.kt.refs.any({ nullable: true });
|
|
534
544
|
}
|
|
535
545
|
}
|
|
536
546
|
getTypeUsage(ctx, args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iDAAiD,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EACV,6CAA6C,EAC7C,4CAA4C,EAC7C,MAAM,aAAa,CAAC;AAErB,KAAK,OAAO,GAAG,6CAA6C,CAAC;AAC7D,KAAK,MAAM,GAAG,4CAA4C,CAAC;AAC3D,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sCAAsC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrF,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6CAA8C,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpG,YAAW,sCAAsC;IAC1C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;IAoBnD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAKxG,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;IAS3F,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAYrG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,MAAM;IAK3F,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAoBjG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA6B9G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,7 +86,10 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
86
86
|
return index_js_1.kt.function(functionName, {
|
|
87
87
|
doc: index_js_1.kt.doc(this.getEndpointDocDescription(ctx, { endpoint })),
|
|
88
88
|
suspend: true,
|
|
89
|
-
|
|
89
|
+
// Spring 7's `WebClient.exchangeToMono` is `<V : Any>`, so the `<T>` overloads need an `Any` bound to infer.
|
|
90
|
+
generics: [
|
|
91
|
+
index_js_1.kt.genericParameter('T', ctx.config.springBootVersion === 4 ? { constraint: index_js_1.kt.refs.any() } : undefined),
|
|
92
|
+
],
|
|
90
93
|
receiverType: index_js_1.kt.refs.springReactive.webClient(),
|
|
91
94
|
parameters: [
|
|
92
95
|
...parameters.map((parameter) => index_js_1.kt.parameter((0, core_1.toCasing)(parameter.name, ctx.config.parameterNameCasing), this.getParameterType(ctx, { endpoint, parameter }), { default: this.getParameterDefaultValue(ctx, { endpoint, parameter }) })),
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SourceBuilder } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import type { SpringBootVersion } from '../../config.js';
|
|
4
|
+
import { type KtReference, ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a Jackson package name for the targeted Spring Boot version.
|
|
8
|
+
*
|
|
9
|
+
* Jackson 3 (the default in Spring Boot 4) moved every package **except annotations** from
|
|
10
|
+
* `com.fasterxml.jackson.*` to `tools.jackson.*`. Annotations stay on `com.fasterxml.jackson.annotation`.
|
|
11
|
+
*/
|
|
12
|
+
const jacksonPackage = (subPackage: string, springBootVersion: SpringBootVersion): string =>
|
|
13
|
+
`${springBootVersion === 4 ? 'tools.jackson' : 'com.fasterxml.jackson'}.${subPackage}`;
|
|
2
14
|
|
|
3
15
|
// com.fasterxml.jackson.annotation
|
|
4
16
|
export const jsonTypeInfo: KtReferenceFactory = ktReference.factory('JsonTypeInfo', 'com.fasterxml.jackson.annotation');
|
|
@@ -23,22 +35,25 @@ export const jsonAnyGetter: KtReferenceFactory = ktReference.factory(
|
|
|
23
35
|
'com.fasterxml.jackson.annotation',
|
|
24
36
|
);
|
|
25
37
|
|
|
26
|
-
// com.fasterxml.jackson.databind
|
|
27
|
-
export const objectMapper
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
'
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
'
|
|
38
|
-
);
|
|
38
|
+
// com.fasterxml.jackson.databind (Jackson 2) / tools.jackson.databind (Jackson 3, Spring Boot 4)
|
|
39
|
+
export const objectMapper = <TBuilder extends SourceBuilder>(
|
|
40
|
+
springBootVersion: SpringBootVersion = 3,
|
|
41
|
+
): KtReference<TBuilder> => ktReference<TBuilder>('ObjectMapper', jacksonPackage('databind', springBootVersion));
|
|
42
|
+
export const serializationFeature = <TBuilder extends SourceBuilder>(
|
|
43
|
+
springBootVersion: SpringBootVersion = 3,
|
|
44
|
+
): KtReference<TBuilder> =>
|
|
45
|
+
ktReference<TBuilder>('SerializationFeature', jacksonPackage('databind', springBootVersion));
|
|
46
|
+
export const deserializationFeature = <TBuilder extends SourceBuilder>(
|
|
47
|
+
springBootVersion: SpringBootVersion = 3,
|
|
48
|
+
): KtReference<TBuilder> =>
|
|
49
|
+
ktReference<TBuilder>('DeserializationFeature', jacksonPackage('databind', springBootVersion));
|
|
39
50
|
|
|
40
|
-
// com.fasterxml.jackson.module.kotlin
|
|
41
|
-
export const jacksonObjectMapper
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
);
|
|
51
|
+
// com.fasterxml.jackson.module.kotlin (Jackson 2) / tools.jackson.module.kotlin (Jackson 3, Spring Boot 4)
|
|
52
|
+
export const jacksonObjectMapper = <TBuilder extends SourceBuilder>(
|
|
53
|
+
springBootVersion: SpringBootVersion = 3,
|
|
54
|
+
): KtReference<TBuilder> =>
|
|
55
|
+
ktReference<TBuilder>('jacksonObjectMapper', jacksonPackage('module.kotlin', springBootVersion));
|
|
56
|
+
export const jacksonMapperBuilder = <TBuilder extends SourceBuilder>(
|
|
57
|
+
springBootVersion: SpringBootVersion = 3,
|
|
58
|
+
): KtReference<TBuilder> =>
|
|
59
|
+
ktReference<TBuilder>('jacksonMapperBuilder', jacksonPackage('module.kotlin', springBootVersion));
|
package/src/src/config.ts
CHANGED
|
@@ -5,6 +5,9 @@ import type {
|
|
|
5
5
|
StringCasingWithOptions,
|
|
6
6
|
} from '@goast/core';
|
|
7
7
|
|
|
8
|
+
/** The Spring Boot major version the Kotlin generators target. */
|
|
9
|
+
export type SpringBootVersion = 3 | 4;
|
|
10
|
+
|
|
8
11
|
export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
9
12
|
typeNameCasing: StringCasing | StringCasingWithOptions;
|
|
10
13
|
parameterNameCasing: StringCasing | StringCasingWithOptions;
|
|
@@ -20,6 +23,15 @@ export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
|
20
23
|
* @default false
|
|
21
24
|
*/
|
|
22
25
|
includeSourceInDocs: boolean;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The targeted Spring Boot major version. Controls Jackson package names, Kotlin generic bounds, and
|
|
29
|
+
* `ResponseEntity` nullability so the generated code compiles against the matching framework generation.
|
|
30
|
+
* - `3`: Spring Boot 3 (Spring Framework 6 / Jackson 2). Produces output identical to previous versions.
|
|
31
|
+
* - `4`: Spring Boot 4 (Spring Framework 7 / Jackson 3 / JSpecify null-safety).
|
|
32
|
+
* @default 3
|
|
33
|
+
*/
|
|
34
|
+
springBootVersion: SpringBootVersion;
|
|
23
35
|
};
|
|
24
36
|
|
|
25
37
|
export const defaultKotlinGeneratorConfig: DefaultGenerationProviderConfig<KotlinGeneratorConfig> = {
|
|
@@ -45,4 +57,5 @@ export const defaultKotlinGeneratorConfig: DefaultGenerationProviderConfig<Kotli
|
|
|
45
57
|
'kotlin.jvm.*',
|
|
46
58
|
],
|
|
47
59
|
includeSourceInDocs: false,
|
|
60
|
+
springBootVersion: 3,
|
|
48
61
|
};
|
|
@@ -66,14 +66,18 @@ export class DefaultKotlinOkHttp3Generator extends KotlinFileGenerator<Context,
|
|
|
66
66
|
extends: ctx.refs.apiClient(),
|
|
67
67
|
primaryConstructor: kt.constructor(
|
|
68
68
|
[
|
|
69
|
-
serializerAsParameter
|
|
69
|
+
serializerAsParameter
|
|
70
|
+
? kt.parameter('objectMapper', kt.refs.jackson.objectMapper(ctx.config.springBootVersion))
|
|
71
|
+
: null,
|
|
70
72
|
kt.parameter('basePath', kt.refs.string(), { default: 'defaultBasePath' }),
|
|
71
73
|
kt.parameter('client', kt.refs.okhttp3.okHttpClient(), {
|
|
72
74
|
default: 'defaultClient',
|
|
73
75
|
}),
|
|
74
|
-
serializerAsParameter
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
serializerAsParameter
|
|
77
|
+
? null
|
|
78
|
+
: kt.parameter('objectMapper', kt.refs.jackson.objectMapper(ctx.config.springBootVersion), {
|
|
79
|
+
default: kt.call([ctx.refs.serializer(), 'jacksonObjectMapper']),
|
|
80
|
+
}),
|
|
77
81
|
],
|
|
78
82
|
null,
|
|
79
83
|
{
|
|
@@ -131,6 +131,14 @@ export class KotlinOkHttp3ClientsGenerator extends OpenApiServicesGenerationProv
|
|
|
131
131
|
: 'val baseUrl: String, val client: Factory = defaultClient, val objectMapper: ObjectMapper = Serializer.jacksonObjectMapper',
|
|
132
132
|
);
|
|
133
133
|
}
|
|
134
|
+
if (ctx.config.springBootVersion === 4) {
|
|
135
|
+
// Jackson 3 (Spring Boot 4) moved every package except annotations from
|
|
136
|
+
// `com.fasterxml.jackson.*` to `tools.jackson.*`. Rewrite the imports in the copied assets to match.
|
|
137
|
+
fileContent = fileContent.replace(
|
|
138
|
+
/\bcom\.fasterxml\.jackson\.(core|databind|module|datatype|dataformat)\b/g,
|
|
139
|
+
'tools.jackson.$1',
|
|
140
|
+
);
|
|
141
|
+
}
|
|
134
142
|
writeGeneratedFile(ctx.config, targetPath, fileContent);
|
|
135
143
|
}
|
|
136
144
|
|
|
@@ -140,15 +148,26 @@ export class KotlinOkHttp3ClientsGenerator extends OpenApiServicesGenerationProv
|
|
|
140
148
|
) {
|
|
141
149
|
const filePath = resolve(targetDir, 'Serializer.kt');
|
|
142
150
|
console.log(`Generating Serializer to ${filePath}...`);
|
|
151
|
+
const springBootVersion = ctx.config.springBootVersion;
|
|
152
|
+
const jsonIncludeMember = toCasing(ctx.config.serializerJsonInclude, 'snake');
|
|
153
|
+
const defaultFactory: AppendValue<KotlinFileBuilder> = springBootVersion === 4
|
|
154
|
+
// Jackson 3's ObjectMapper is immutable; configuration moved to the (Kotlin) mapper builder.
|
|
155
|
+
? s`${kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${s.indent`
|
|
156
|
+
.findAndAddModules()
|
|
157
|
+
.changeDefaultPropertyInclusion { it.withValueInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
|
|
158
|
+
.configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
159
|
+
.configure(${kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
|
160
|
+
.build()`}`
|
|
161
|
+
: s`${kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${s.indent`
|
|
162
|
+
.findAndRegisterModules()
|
|
163
|
+
.setSerializationInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
|
|
164
|
+
.configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
165
|
+
.configure(${
|
|
166
|
+
kt.refs.jackson.deserializationFeature(springBootVersion)
|
|
167
|
+
}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
143
168
|
const factory: AppendValue<KotlinFileBuilder> = typeof ctx.config.serializer === 'object'
|
|
144
169
|
? ctx.config.serializer.factory
|
|
145
|
-
:
|
|
146
|
-
.findAndRegisterModules()
|
|
147
|
-
.setSerializationInclusion(${kt.refs.jackson.jsonInclude()}.Include.${
|
|
148
|
-
toCasing(ctx.config.serializerJsonInclude, 'snake')
|
|
149
|
-
})
|
|
150
|
-
.configure(${kt.refs.jackson.serializationFeature()}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
151
|
-
.configure(${kt.refs.jackson.deserializationFeature()}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
170
|
+
: defaultFactory;
|
|
152
171
|
|
|
153
172
|
const builder = new KotlinFileBuilder(ctx.infrastructurePackageName, ctx.config);
|
|
154
173
|
builder.append(
|
|
@@ -156,7 +175,7 @@ export class KotlinOkHttp3ClientsGenerator extends OpenApiServicesGenerationProv
|
|
|
156
175
|
name: 'Serializer',
|
|
157
176
|
members: [
|
|
158
177
|
kt.property('jacksonObjectMapper', {
|
|
159
|
-
type: kt.refs.jackson.objectMapper(),
|
|
178
|
+
type: kt.refs.jackson.objectMapper(ctx.config.springBootVersion),
|
|
160
179
|
mutable: false,
|
|
161
180
|
default: kt.call('run', [kt.lambda([], factory)]),
|
|
162
181
|
}),
|
|
@@ -479,12 +479,16 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator<
|
|
|
479
479
|
): kt.Class<Builder> {
|
|
480
480
|
const { endpoint } = args;
|
|
481
481
|
const name = this.getApiResponseEntityName(ctx, { endpoint });
|
|
482
|
+
// Spring 7's `ResponseEntity<T>` carries an `Any` upper bound (JSpecify), so the subclass must bound `T`.
|
|
483
|
+
// The body parameter is then made nullable (`T?`) to keep null-body ("no response body") responses legal
|
|
484
|
+
// while staying wire-identical, since Spring's super constructor accepts a `@Nullable T body`.
|
|
485
|
+
const springBoot4 = ctx.config.springBootVersion === 4;
|
|
482
486
|
return kt.class(name, {
|
|
483
487
|
doc: kt.doc(`Response entity for ${endpoint.name}.`),
|
|
484
|
-
generics: [kt.genericParameter('T')],
|
|
488
|
+
generics: [kt.genericParameter('T', springBoot4 ? { constraint: kt.refs.any() } : undefined)],
|
|
485
489
|
primaryConstructor: kt.constructor(
|
|
486
490
|
[
|
|
487
|
-
kt.parameter.class('body', kt.reference('T')),
|
|
491
|
+
kt.parameter.class('body', kt.reference('T', null, springBoot4 ? { nullable: true } : undefined)),
|
|
488
492
|
kt.parameter.class('rawStatus', kt.refs.int()),
|
|
489
493
|
kt.parameter.class(
|
|
490
494
|
'headers',
|
|
@@ -549,7 +553,11 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator<
|
|
|
549
553
|
null,
|
|
550
554
|
{
|
|
551
555
|
generics: [
|
|
552
|
-
hasResponseBody
|
|
556
|
+
hasResponseBody
|
|
557
|
+
? responseType
|
|
558
|
+
// `Unit?` violates the `T : Any` bound under Spring Boot 4; the `null` body argument
|
|
559
|
+
// below stays (now legal because the subclass body parameter is nullable).
|
|
560
|
+
: (springBoot4 ? kt.refs.unit() : kt.refs.unit({ nullable: true })),
|
|
553
561
|
],
|
|
554
562
|
},
|
|
555
563
|
),
|
|
@@ -888,7 +896,9 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator<
|
|
|
888
896
|
} else if (responseSchemas.length === 0) {
|
|
889
897
|
return kt.refs.unit();
|
|
890
898
|
} else {
|
|
891
|
-
|
|
899
|
+
// Under Spring Boot 4, this type flows into `ResponseEntity<T : Any>` (e.g. the delegate default methods),
|
|
900
|
+
// so the ambiguous/unknown-body fallback must be non-null `Any` rather than `Any?`.
|
|
901
|
+
return ctx.config.springBootVersion === 4 ? kt.refs.any() : kt.refs.any({ nullable: true });
|
|
892
902
|
}
|
|
893
903
|
}
|
|
894
904
|
|
|
@@ -146,7 +146,10 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
146
146
|
return kt.function(functionName, {
|
|
147
147
|
doc: kt.doc(this.getEndpointDocDescription(ctx, { endpoint })),
|
|
148
148
|
suspend: true,
|
|
149
|
-
|
|
149
|
+
// Spring 7's `WebClient.exchangeToMono` is `<V : Any>`, so the `<T>` overloads need an `Any` bound to infer.
|
|
150
|
+
generics: [
|
|
151
|
+
kt.genericParameter('T', ctx.config.springBootVersion === 4 ? { constraint: kt.refs.any() } : undefined),
|
|
152
|
+
],
|
|
150
153
|
receiverType: kt.refs.springReactive.webClient(),
|
|
151
154
|
parameters: [
|
|
152
155
|
...parameters.map((parameter) =>
|