@goast/kotlin 0.1.15 → 0.1.16

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.
@@ -117,8 +117,7 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_1.KotlinFile
117
117
  builder.forEach(parameters, (builder, parameter) => this.generateApiInterfaceMethodParameter(ctx, builder, endpoint, parameter), { separator: ',\n' });
118
118
  }
119
119
  generateApiInterfaceMethodReturnType(ctx, builder, endpoint) {
120
- var _a, _b;
121
- this.generateResponseEntityType(ctx, builder, (_b = (_a = endpoint.responses[0]) === null || _a === void 0 ? void 0 : _a.contentOptions[0]) === null || _b === void 0 ? void 0 : _b.schema);
120
+ this.generateResponseEntityType(ctx, builder, endpoint);
122
121
  }
123
122
  generateApiInterfaceMethodParameter(ctx, builder, endpoint, parameter) {
124
123
  builder
@@ -304,8 +303,7 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_1.KotlinFile
304
303
  builder.forEach(parameters, (builder, parameter) => this.generateApiDelegateInterfaceMethodParameter(ctx, builder, endpoint, parameter), { separator: ',\n' });
305
304
  }
306
305
  generateApiDelegateInterfaceMethodReturnType(ctx, builder, endpoint) {
307
- var _a, _b;
308
- this.generateResponseEntityType(ctx, builder, (_b = (_a = endpoint.responses[0]) === null || _a === void 0 ? void 0 : _a.contentOptions[0]) === null || _b === void 0 ? void 0 : _b.schema);
306
+ this.generateResponseEntityType(ctx, builder, endpoint);
309
307
  }
310
308
  generateApiDelegateInterfaceMethodParameter(ctx, builder, endpoint, parameter) {
311
309
  builder
@@ -330,11 +328,29 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_1.KotlinFile
330
328
  .addImport('ResponseEntity', 'org.springframework.http')
331
329
  .addImport('HttpStatus', 'org.springframework.http');
332
330
  }
333
- generateResponseEntityType(ctx, builder, schema) {
331
+ generateResponseEntityType(ctx, builder, endpoint) {
334
332
  builder
335
333
  .append('ResponseEntity')
336
334
  .addImport('ResponseEntity', 'org.springframework.http')
337
- .parenthesize('<>', (builder) => this.generateTypeUsage(ctx, builder, schema, true, 'Unit'));
335
+ .parenthesize('<>', (builder) => {
336
+ const responseSchemas = endpoint.responses
337
+ .flatMap((x) => x.contentOptions.flatMap((x) => x.schema))
338
+ .filter(core_1.notNullish)
339
+ .filter((x, i, a) => a.findIndex((y) => {
340
+ const xInfo = this.getSchemaInfo(ctx, x);
341
+ const yInfo = this.getSchemaInfo(ctx, y);
342
+ return xInfo.typeName === yInfo.typeName && xInfo.packageName === yInfo.packageName;
343
+ }) === i);
344
+ if (responseSchemas.length === 1) {
345
+ this.generateTypeUsage(ctx, builder, responseSchemas[0], true, 'Unit');
346
+ }
347
+ else if (responseSchemas.length === 0) {
348
+ builder.append('Unit');
349
+ }
350
+ else {
351
+ builder.append('Any?');
352
+ }
353
+ });
338
354
  }
339
355
  generateTypeUsage(ctx, builder, schema, arrayAsFlux, fallback) {
340
356
  if (schema && schema.kind === 'array') {
@@ -1,5 +1,5 @@
1
1
  import { ensureDirSync, writeFileSync } from 'fs-extra';
2
- import { toCasing } from '@goast/core';
2
+ import { notNullish, toCasing } from '@goast/core';
3
3
  import { KotlinFileBuilder } from '../../../file-builder';
4
4
  import { modifyString } from '../../../utils';
5
5
  import { KotlinFileGenerator } from '../../file-generator';
@@ -114,8 +114,7 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
114
114
  builder.forEach(parameters, (builder, parameter) => this.generateApiInterfaceMethodParameter(ctx, builder, endpoint, parameter), { separator: ',\n' });
115
115
  }
116
116
  generateApiInterfaceMethodReturnType(ctx, builder, endpoint) {
117
- var _a, _b;
118
- this.generateResponseEntityType(ctx, builder, (_b = (_a = endpoint.responses[0]) === null || _a === void 0 ? void 0 : _a.contentOptions[0]) === null || _b === void 0 ? void 0 : _b.schema);
117
+ this.generateResponseEntityType(ctx, builder, endpoint);
119
118
  }
120
119
  generateApiInterfaceMethodParameter(ctx, builder, endpoint, parameter) {
121
120
  builder
@@ -301,8 +300,7 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
301
300
  builder.forEach(parameters, (builder, parameter) => this.generateApiDelegateInterfaceMethodParameter(ctx, builder, endpoint, parameter), { separator: ',\n' });
302
301
  }
303
302
  generateApiDelegateInterfaceMethodReturnType(ctx, builder, endpoint) {
304
- var _a, _b;
305
- this.generateResponseEntityType(ctx, builder, (_b = (_a = endpoint.responses[0]) === null || _a === void 0 ? void 0 : _a.contentOptions[0]) === null || _b === void 0 ? void 0 : _b.schema);
303
+ this.generateResponseEntityType(ctx, builder, endpoint);
306
304
  }
307
305
  generateApiDelegateInterfaceMethodParameter(ctx, builder, endpoint, parameter) {
308
306
  builder
@@ -327,11 +325,29 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
327
325
  .addImport('ResponseEntity', 'org.springframework.http')
328
326
  .addImport('HttpStatus', 'org.springframework.http');
329
327
  }
330
- generateResponseEntityType(ctx, builder, schema) {
328
+ generateResponseEntityType(ctx, builder, endpoint) {
331
329
  builder
332
330
  .append('ResponseEntity')
333
331
  .addImport('ResponseEntity', 'org.springframework.http')
334
- .parenthesize('<>', (builder) => this.generateTypeUsage(ctx, builder, schema, true, 'Unit'));
332
+ .parenthesize('<>', (builder) => {
333
+ const responseSchemas = endpoint.responses
334
+ .flatMap((x) => x.contentOptions.flatMap((x) => x.schema))
335
+ .filter(notNullish)
336
+ .filter((x, i, a) => a.findIndex((y) => {
337
+ const xInfo = this.getSchemaInfo(ctx, x);
338
+ const yInfo = this.getSchemaInfo(ctx, y);
339
+ return xInfo.typeName === yInfo.typeName && xInfo.packageName === yInfo.packageName;
340
+ }) === i);
341
+ if (responseSchemas.length === 1) {
342
+ this.generateTypeUsage(ctx, builder, responseSchemas[0], true, 'Unit');
343
+ }
344
+ else if (responseSchemas.length === 0) {
345
+ builder.append('Unit');
346
+ }
347
+ else {
348
+ builder.append('Any?');
349
+ }
350
+ });
335
351
  }
336
352
  generateTypeUsage(ctx, builder, schema, arrayAsFlux, fallback) {
337
353
  if (schema && schema.kind === 'array') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goast/kotlin",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "repository": "https://github.com/MaSch0212/goast.git",
5
5
  "author": {
6
6
  "name": "Marc Schmidt (MaSch0212)",
@@ -48,7 +48,7 @@ export declare class DefaultKotlinSpringControllerGenerator extends KotlinFileGe
48
48
  protected generateApiDelegateInterfaceMethodParameterAnnotations(ctx: Context, builder: Builder, endpoint: ApiEndpoint, parameter: ApiParameter): void;
49
49
  protected generateApiDelegateInterfaceMethodParameterSignature(ctx: Context, builder: Builder, endpoint: ApiEndpoint, parameter: ApiParameter): void;
50
50
  protected generateApiDelegateInterfaceMethodContent(ctx: Context, builder: Builder, endpoint: ApiEndpoint): void;
51
- protected generateResponseEntityType(ctx: Context, builder: Builder, schema: ApiSchema | undefined): void;
51
+ protected generateResponseEntityType(ctx: Context, builder: Builder, endpoint: ApiEndpoint): void;
52
52
  protected generateTypeUsage(ctx: Context, builder: Builder, schema: ApiSchema | undefined, arrayAsFlux: boolean, fallback?: string): void;
53
53
  protected getControllerRequestMapping(ctx: Context, prefix?: string): string;
54
54
  protected getBasePath(ctx: Context): string;