forked from loafle/openapi-generator-original
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4fa075d291 | |||
| d2c48e2999 | |||
| 2168851e8a | |||
| 6c955da59a | |||
| 3d2e38e347 | |||
| b11005b00d | |||
| 3bb17efa09 | |||
| ac14e66da1 | |||
| 1024c7733e | |||
| 90301f932d | |||
| 6d10e80916 | |||
| f357be480e | |||
| 2a39b29684 | |||
| 88204b247a |
@@ -23,6 +23,7 @@ jobs:
|
||||
sample:
|
||||
- samples/client/petstore/csharp/generichost/net8/AllOf
|
||||
- samples/client/petstore/csharp/generichost/net8/AnyOf
|
||||
- samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare
|
||||
- samples/client/petstore/csharp/generichost/net8/FormModels
|
||||
- samples/client/petstore/csharp/generichost/net8/ManualPetstoreTests
|
||||
- samples/client/petstore/csharp/generichost/net8/ManualSourceGenerationTests
|
||||
|
||||
@@ -45,6 +45,7 @@ build_script:
|
||||
test_script:
|
||||
- dotnet test samples\client\petstore\csharp\generichost\net8\AllOf\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
|
||||
- dotnet test samples\client\petstore\csharp\generichost\net8\AnyOf\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
|
||||
- dotnet test samples\client\petstore\csharp\generichost\net8\AnyOfNoCompare\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
|
||||
- dotnet test samples\client\petstore\csharp\generichost\net8\FormModels\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
|
||||
- dotnet test samples\client\petstore\csharp\generichost\net8\ManualSourceGenerationTests\ManualTests.Latest.UseSourceGeneration\ManualTests.Latest.UseSourceGeneration.csproj
|
||||
- dotnet test samples\client\petstore\csharp\generichost\net8\ManualPetstoreTests\OpenAPIClient-generichost-manual-tests\OpenAPIClient-generichost-manual-tests.csproj
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# for csharp generichost
|
||||
generatorName: csharp
|
||||
outputDir: samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/anyOf.yaml
|
||||
library: generichost
|
||||
templateDir: modules/openapi-generator/src/main/resources/csharp
|
||||
additionalProperties:
|
||||
packageGuid: '{321C8C3F-0156-40C1-AE42-D59761FB9B6C}'
|
||||
useCompareNetObjects: false
|
||||
disallowAdditionalPropertiesIfNotPresent: false
|
||||
nullableReferenceTypes: true
|
||||
equatable: true
|
||||
targetFramework: net8.0
|
||||
@@ -91,6 +91,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
<li>except</li>
|
||||
<li>exec</li>
|
||||
<li>false</li>
|
||||
<li>field</li>
|
||||
<li>finally</li>
|
||||
<li>float</li>
|
||||
<li>for</li>
|
||||
|
||||
@@ -91,6 +91,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
<li>except</li>
|
||||
<li>exec</li>
|
||||
<li>false</li>
|
||||
<li>field</li>
|
||||
<li>finally</li>
|
||||
<li>float</li>
|
||||
<li>for</li>
|
||||
|
||||
@@ -91,6 +91,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
<li>except</li>
|
||||
<li>exec</li>
|
||||
<li>false</li>
|
||||
<li>field</li>
|
||||
<li>finally</li>
|
||||
<li>float</li>
|
||||
<li>for</li>
|
||||
|
||||
@@ -88,6 +88,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
<li>except</li>
|
||||
<li>exec</li>
|
||||
<li>false</li>
|
||||
<li>field</li>
|
||||
<li>finally</li>
|
||||
<li>float</li>
|
||||
<li>for</li>
|
||||
|
||||
@@ -401,7 +401,7 @@ class GenerateTaskDslTest : TestBase() {
|
||||
fun `openApiValidate should fail on invalid spec`() {
|
||||
// Arrange
|
||||
val projectFiles = mapOf(
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||
)
|
||||
|
||||
withProject(defaultBuildGradle, projectFiles)
|
||||
@@ -423,7 +423,7 @@ class GenerateTaskDslTest : TestBase() {
|
||||
fun `openApiValidate should ok skip spec validation`() {
|
||||
// Arrange
|
||||
val projectFiles = mapOf(
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||
)
|
||||
|
||||
withProject("""
|
||||
|
||||
@@ -113,7 +113,7 @@ class ValidateTaskDslTest : TestBase() {
|
||||
fun `openApiValidate should fail on invalid spec`(gradleVersion: String?) {
|
||||
// Arrange
|
||||
val projectFiles = mapOf(
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||
)
|
||||
withProject(
|
||||
"""
|
||||
@@ -139,6 +139,50 @@ class ValidateTaskDslTest : TestBase() {
|
||||
result.output.contains("Spec is invalid."),
|
||||
"Unexpected/no message presented to the user for an invalid spec."
|
||||
)
|
||||
assertTrue(
|
||||
result.output.contains("attribute info is missing"),
|
||||
"Spec validation detail"
|
||||
)
|
||||
assertEquals(
|
||||
FAILED, result.task(":openApiValidate")?.outcome,
|
||||
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}"
|
||||
)
|
||||
}
|
||||
|
||||
@Test(dataProvider = "gradle_version_provider")
|
||||
fun `openApiValidate should fail on invalid spec with duplicate 200 status code`(gradleVersion: String?) {
|
||||
// Arrange
|
||||
val projectFiles = mapOf(
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-duplicate-200-status-code.yaml")
|
||||
)
|
||||
withProject(
|
||||
"""
|
||||
| plugins {
|
||||
| id 'org.openapi.generator'
|
||||
| }
|
||||
|
|
||||
| openApiValidate {
|
||||
| inputSpec = file('spec.yaml').absolutePath
|
||||
| }
|
||||
""".trimMargin(), projectFiles
|
||||
)
|
||||
|
||||
// Act
|
||||
val result = getGradleRunner(gradleVersion)
|
||||
.withProjectDir(temp)
|
||||
.withArguments("openApiValidate")
|
||||
.withPluginClasspath()
|
||||
.buildAndFail()
|
||||
|
||||
// Assert
|
||||
assertTrue(
|
||||
result.output.contains("Spec is invalid."),
|
||||
"Unexpected/no message presented to the user for an invalid spec."
|
||||
)
|
||||
assertTrue(
|
||||
result.output.contains("Duplicate field 200"),
|
||||
"Spec validation detail"
|
||||
)
|
||||
assertEquals(
|
||||
FAILED, result.task(":openApiValidate")?.outcome,
|
||||
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}"
|
||||
@@ -186,7 +230,7 @@ class ValidateTaskDslTest : TestBase() {
|
||||
fun `validateBadSpec as defined task should fail on invalid spec`(gradleVersion: String?) {
|
||||
// Arrange
|
||||
val projectFiles = mapOf(
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||
)
|
||||
withProject(
|
||||
"""
|
||||
@@ -212,6 +256,10 @@ class ValidateTaskDslTest : TestBase() {
|
||||
result.output.contains("Spec is invalid."),
|
||||
"Unexpected/no message presented to the user for an invalid spec."
|
||||
)
|
||||
assertTrue(
|
||||
result.output.contains("attribute info is missing"),
|
||||
"Unexpected/no message presented to the user for an invalid spec."
|
||||
)
|
||||
assertEquals(
|
||||
FAILED, result.task(":validateBadSpec")?.outcome,
|
||||
"Expected a failed run, but found ${result.task(":validateBadSpec")?.outcome}"
|
||||
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
openapi: "3.0.0"
|
||||
info:
|
||||
version: 1.0.0
|
||||
title: Swagger Petstore
|
||||
license:
|
||||
name: MIT
|
||||
servers:
|
||||
- url: http://petstore.swagger.io/v1
|
||||
paths:
|
||||
/pets:
|
||||
get:
|
||||
summary: List all pets
|
||||
operationId: listPets
|
||||
tags:
|
||||
- pets
|
||||
parameters:
|
||||
- name: limit
|
||||
in: query
|
||||
description: How many items to return at one time (max 100)
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
format: int32
|
||||
responses:
|
||||
'200':
|
||||
description: A paged array of pets
|
||||
headers:
|
||||
x-next:
|
||||
description: A link to the next page of responses
|
||||
schema:
|
||||
type: string
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Pets"
|
||||
'200':
|
||||
description: duplicate 200
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
post:
|
||||
summary: Create a pet
|
||||
operationId: createPets
|
||||
tags:
|
||||
- pets
|
||||
responses:
|
||||
'201':
|
||||
description: Null response
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
/pets/{petId}:
|
||||
get:
|
||||
summary: Info for a specific pet
|
||||
operationId: showPetById
|
||||
tags:
|
||||
- pets
|
||||
parameters:
|
||||
- name: petId
|
||||
in: path
|
||||
required: true
|
||||
description: The id of the pet to retrieve
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Expected response to a valid request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Pets"
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
components:
|
||||
schemas:
|
||||
Pet:
|
||||
required:
|
||||
- id
|
||||
- name
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int64
|
||||
name:
|
||||
type: string
|
||||
tag:
|
||||
type: string
|
||||
Pets:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/Pet"
|
||||
Error:
|
||||
required:
|
||||
- code
|
||||
- message
|
||||
properties:
|
||||
code:
|
||||
type: integer
|
||||
format: int32
|
||||
message:
|
||||
type: string
|
||||
+71
-31
@@ -97,6 +97,8 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
private static final Cache<SanitizeNameOptions, String> sanitizedNameCache;
|
||||
private static final String xSchemaTestExamplesKey = "x-schema-test-examples";
|
||||
private static final String xSchemaTestExamplesRefPrefix = "#/components/x-schema-test-examples/";
|
||||
protected static Schema falseSchema;
|
||||
protected static Schema trueSchema = new Schema();
|
||||
|
||||
static {
|
||||
DefaultFeatureSet = FeatureSet.newBuilder()
|
||||
@@ -149,6 +151,8 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
.expireAfterAccess(cacheExpiry, TimeUnit.SECONDS)
|
||||
.ticker(Ticker.systemTicker())
|
||||
.build();
|
||||
falseSchema = new Schema();
|
||||
falseSchema.setNot(new Schema());
|
||||
}
|
||||
|
||||
protected GeneratorMetadata generatorMetadata;
|
||||
@@ -300,6 +304,8 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
// A cache to efficiently lookup schema `toModelName()` based on the schema Key
|
||||
private final Map<String, String> schemaKeyToModelNameCache = new HashMap<>();
|
||||
|
||||
protected boolean loadDeepObjectIntoItems = true;
|
||||
|
||||
// if true then baseTypes will be imported
|
||||
protected boolean importBaseType = true;
|
||||
|
||||
@@ -1086,7 +1092,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
addOneOfNameExtension(s, n);
|
||||
}
|
||||
} else if (ModelUtils.isArraySchema(s)) {
|
||||
Schema items = ((ArraySchema) s).getItems();
|
||||
Schema items = ModelUtils.getSchemaItems(s);
|
||||
if (ModelUtils.isComposedSchema(items)) {
|
||||
addOneOfNameExtension(items, nOneOf);
|
||||
addOneOfInterfaceModel(items, nOneOf);
|
||||
@@ -2059,8 +2065,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
return inner;
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arraySchema = (ArraySchema) schema;
|
||||
String inner = getSchemaType(getSchemaItems(arraySchema));
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(schema));
|
||||
String parentType;
|
||||
if (ModelUtils.isSet(schema)) {
|
||||
parentType = "set";
|
||||
@@ -2366,15 +2371,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
}
|
||||
|
||||
protected Schema<?> getSchemaItems(ArraySchema schema) {
|
||||
Schema<?> items = schema.getItems();
|
||||
if (items == null) {
|
||||
LOGGER.error("Undefined array inner type for `{}`. Default to String.", schema.getName());
|
||||
items = new StringSchema().description("TODO default missing array inner type to string");
|
||||
schema.setItems(items);
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
|
||||
protected Schema<?> getSchemaAdditionalProperties(Schema schema) {
|
||||
Schema<?> inner = ModelUtils.getAdditionalProperties(schema);
|
||||
@@ -3116,6 +3113,11 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
Map<String, Schema> allDefinitions = ModelUtils.getSchemas(this.openAPI);
|
||||
|
||||
CodegenModel m = CodegenModelFactory.newInstance(CodegenModelType.MODEL);
|
||||
if (schema.equals(trueSchema)) {
|
||||
m.setIsBooleanSchemaTrue(true);
|
||||
} else if (schema.equals(falseSchema)) {
|
||||
m.setIsBooleanSchemaFalse(true);
|
||||
}
|
||||
// unalias schema
|
||||
schema = unaliasSchema(schema);
|
||||
if (schema == null) {
|
||||
@@ -3972,7 +3974,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
LOGGER.error("Undefined property/schema for `{}`. Default to type:string.", name);
|
||||
return null;
|
||||
}
|
||||
LOGGER.debug("debugging fromProperty for {} : {}", name, p);
|
||||
LOGGER.debug("debugging fromProperty for {}: {}", name, p);
|
||||
NamedSchema ns = new NamedSchema(name, p, required, schemaIsFromAdditionalProperties);
|
||||
CodegenProperty cpc = schemaCodegenPropertyCache.get(ns);
|
||||
if (cpc != null) {
|
||||
@@ -4001,6 +4003,11 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
|
||||
CodegenProperty property = CodegenModelFactory.newInstance(CodegenModelType.PROPERTY);
|
||||
if (p.equals(trueSchema)) {
|
||||
property.setIsBooleanSchemaTrue(true);
|
||||
} else if (p.equals(falseSchema)) {
|
||||
property.setIsBooleanSchemaFalse(true);
|
||||
}
|
||||
|
||||
// unalias schema
|
||||
p = unaliasSchema(p);
|
||||
@@ -4174,8 +4181,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
// handle inner property
|
||||
String itemName = getItemsName(p, name);
|
||||
ArraySchema arraySchema = (ArraySchema) p;
|
||||
Schema innerSchema = unaliasSchema(getSchemaItems(arraySchema));
|
||||
Schema innerSchema = unaliasSchema(ModelUtils.getSchemaItems(p));
|
||||
CodegenProperty cp = fromProperty(itemName, innerSchema, false);
|
||||
updatePropertyForArray(property, cp);
|
||||
} else if (ModelUtils.isTypeObjectSchema(p)) {
|
||||
@@ -4485,8 +4491,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
CodegenProperty cm = fromProperty("response", responseSchema, false);
|
||||
|
||||
if (ModelUtils.isArraySchema(responseSchema)) {
|
||||
ArraySchema as = (ArraySchema) responseSchema;
|
||||
CodegenProperty innerProperty = fromProperty("response", getSchemaItems(as), false);
|
||||
CodegenProperty innerProperty = fromProperty("response", ModelUtils.getSchemaItems(responseSchema), false);
|
||||
op.returnBaseType = innerProperty.baseType;
|
||||
} else if (ModelUtils.isMapSchema(responseSchema)) {
|
||||
CodegenProperty innerProperty = fromProperty("response", ModelUtils.getAdditionalProperties(responseSchema), false);
|
||||
@@ -5011,8 +5016,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
r.isArray = true;
|
||||
r.containerType = cp.containerType;
|
||||
r.containerTypeMapped = typeMapping.get(cp.containerType);
|
||||
ArraySchema as = (ArraySchema) responseSchema;
|
||||
CodegenProperty items = fromProperty("response", getSchemaItems(as), false);
|
||||
CodegenProperty items = fromProperty("response", ModelUtils.getSchemaItems(responseSchema), false);
|
||||
r.setItems(items);
|
||||
CodegenProperty innerCp = items;
|
||||
|
||||
@@ -5388,8 +5392,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
addVarsRequiredVarsAdditionalProps(parameterSchema, codegenParameter);
|
||||
} else if (ModelUtils.isArraySchema(parameterSchema)) {
|
||||
final ArraySchema arraySchema = (ArraySchema) parameterSchema;
|
||||
Schema inner = getSchemaItems(arraySchema);
|
||||
Schema inner = ModelUtils.getSchemaItems(parameterSchema);
|
||||
|
||||
collectionFormat = getCollectionFormat(parameter);
|
||||
// default to csv:
|
||||
@@ -5474,7 +5477,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
codegenParameter.pattern = toRegularExpression(parameterSchema.getPattern());
|
||||
|
||||
if (codegenParameter.isQueryParam && codegenParameter.isDeepObject) {
|
||||
if (codegenParameter.isQueryParam && codegenParameter.isDeepObject && loadDeepObjectIntoItems) {
|
||||
Schema schema = parameterSchema;
|
||||
if (schema.get$ref() != null) {
|
||||
schema = ModelUtils.getReferencedSchema(openAPI, schema);
|
||||
@@ -7201,7 +7204,9 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
codegenParameter.nameInPascalCase = camelize(codegenParameter.paramName);
|
||||
codegenParameter.nameInSnakeCase = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, codegenParameter.nameInPascalCase);
|
||||
codegenParameter.nameInLowerCase = codegenParameter.paramName.toLowerCase(Locale.ROOT);
|
||||
|
||||
codegenParameter.isContainer = codegenProperty.isContainer;
|
||||
codegenParameter.containerType = codegenProperty.containerType;
|
||||
codegenParameter.containerTypeMapped = codegenProperty.containerTypeMapped;
|
||||
codegenParameter.dataFormat = codegenProperty.dataFormat;
|
||||
// non-array/map
|
||||
updateCodegenPropertyEnum(codegenProperty);
|
||||
@@ -7268,19 +7273,27 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
}
|
||||
} else if (ModelUtils.isTypeObjectSchema(ps)) {
|
||||
if (ModelUtils.isFreeFormObject(ps)) {
|
||||
if (ModelUtils.isMapSchema(ps)) {
|
||||
codegenParameter.isMap = true;
|
||||
codegenParameter.additionalProperties = codegenProperty.additionalProperties;
|
||||
codegenParameter.setAdditionalPropertiesIsAnyType(codegenProperty.getAdditionalPropertiesIsAnyType());
|
||||
codegenParameter.items = codegenProperty.items;
|
||||
codegenParameter.isPrimitiveType = false;
|
||||
codegenParameter.items = codegenProperty.items;
|
||||
codegenParameter.mostInnerItems = codegenProperty.mostInnerItems;
|
||||
} else if (ModelUtils.isFreeFormObject(ps)) {
|
||||
codegenParameter.isFreeFormObject = true;
|
||||
}
|
||||
} else if (ModelUtils.isNullType(ps)) {
|
||||
} else if (ModelUtils.isAnyType(ps)) {
|
||||
// any schema with no type set, composed schemas often do this
|
||||
} else if (ModelUtils.isArraySchema(ps)) {
|
||||
Schema inner = getSchemaItems((ArraySchema) ps);
|
||||
Schema inner = ModelUtils.getSchemaItems(ps);
|
||||
CodegenProperty arrayInnerProperty = fromProperty("inner", inner, false);
|
||||
codegenParameter.isArray = true;
|
||||
codegenParameter.items = arrayInnerProperty;
|
||||
codegenParameter.mostInnerItems = arrayInnerProperty.mostInnerItems;
|
||||
codegenParameter.isPrimitiveType = false;
|
||||
codegenParameter.isContainer = true;
|
||||
// hoist items data into the array property
|
||||
// TODO this hoisting code is generator specific and should be isolated into updateFormPropertyForArray
|
||||
codegenParameter.baseType = arrayInnerProperty.dataType;
|
||||
@@ -7556,11 +7569,10 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
if (ModelUtils.isGenerateAliasAsModel(schema) && StringUtils.isNotBlank(name)) {
|
||||
this.addBodyModelSchema(codegenParameter, name, schema, imports, bodyParameterName, true);
|
||||
} else {
|
||||
final ArraySchema arraySchema = (ArraySchema) schema;
|
||||
Schema inner = getSchemaItems(arraySchema);
|
||||
CodegenProperty codegenProperty = fromProperty("property", arraySchema, false);
|
||||
Schema inner = ModelUtils.getSchemaItems(schema);
|
||||
CodegenProperty codegenProperty = fromProperty("property", schema, false);
|
||||
if (codegenProperty == null) {
|
||||
throw new RuntimeException("CodegenProperty cannot be null. arraySchema for debugging: " + arraySchema);
|
||||
throw new RuntimeException("CodegenProperty cannot be null. arraySchema for debugging: " + schema);
|
||||
}
|
||||
|
||||
imports.add(codegenProperty.baseType);
|
||||
@@ -7593,7 +7605,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
|
||||
codegenParameter.items = codegenProperty.items;
|
||||
codegenParameter.mostInnerItems = codegenProperty.mostInnerItems;
|
||||
codegenParameter.dataType = getTypeDeclaration(arraySchema);
|
||||
codegenParameter.dataType = getTypeDeclaration(schema);
|
||||
codegenParameter.baseType = getSchemaType(inner);
|
||||
codegenParameter.isContainer = Boolean.TRUE;
|
||||
codegenParameter.isNullable = codegenProperty.isNullable;
|
||||
@@ -8482,6 +8494,34 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
*/
|
||||
protected String handleSpecialCharacters(String name) { return name; }
|
||||
|
||||
/**
|
||||
* Used to ensure that null or Schema is returned given an input Boolean/Schema/null
|
||||
* This will be used in openapi 3.1.0 spec processing to ensure that Booleans become Schemas
|
||||
* Because our generators only understand Schemas
|
||||
* Note: use getIsBooleanSchemaTrue or getIsBooleanSchemaFalse on the IJsonSchemaValidationProperties
|
||||
* if you need to be able to detect if the original schema's value was true or false
|
||||
*
|
||||
* @param schema the input Boolean or Schema data to convert to a Schema
|
||||
* @return Schema the input data converted to a Schema if possible
|
||||
*/
|
||||
protected Schema getSchemaFromBooleanOrSchema(Object schema) {
|
||||
if (schema == null) {
|
||||
return null;
|
||||
} else if (schema instanceof Boolean) {
|
||||
if (Boolean.TRUE.equals(schema)) {
|
||||
return trueSchema;
|
||||
} else if (Boolean.FALSE.equals(schema)) {
|
||||
return falseSchema;
|
||||
}
|
||||
// null case
|
||||
return null;
|
||||
} else if (schema instanceof Schema) {
|
||||
return (Schema) schema;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Invalid schema type; type must be Boolean or Schema");
|
||||
}
|
||||
}
|
||||
|
||||
public void setAutosetConstants(boolean autosetConstants) {
|
||||
this.autosetConstants = autosetConstants;
|
||||
}
|
||||
|
||||
+9
-11
@@ -338,10 +338,9 @@ public class InlineModelResolver {
|
||||
return;
|
||||
}
|
||||
// Check array items
|
||||
if (schema instanceof ArraySchema) {
|
||||
ArraySchema array = (ArraySchema) schema;
|
||||
Schema items = array.getItems();
|
||||
if (items == null && array.getPrefixItems() == null) {
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
Schema items = ModelUtils.getSchemaItems(schema);
|
||||
if (items == null && schema.getPrefixItems() == null) {
|
||||
LOGGER.debug("Incorrect array schema with no items, prefixItems: {}", schema.toString());
|
||||
return;
|
||||
}
|
||||
@@ -357,7 +356,7 @@ public class InlineModelResolver {
|
||||
|
||||
if (isModelNeeded(items)) {
|
||||
// If this schema should be split into its own model, do so
|
||||
array.setItems(this.makeSchemaInComponents(schemaName, items));
|
||||
schema.setItems(this.makeSchemaInComponents(schemaName, items));
|
||||
}
|
||||
}
|
||||
// Check allOf, anyOf, oneOf for inline models
|
||||
@@ -788,9 +787,8 @@ public class InlineModelResolver {
|
||||
propsToUpdate.put(key, schema);
|
||||
modelsToAdd.put(modelName, model);
|
||||
}
|
||||
} else if (property instanceof ArraySchema) {
|
||||
ArraySchema ap = (ArraySchema) property;
|
||||
Schema inner = ap.getItems();
|
||||
} else if (ModelUtils.isArraySchema(property)) {
|
||||
Schema inner = ModelUtils.getSchemaItems(property);
|
||||
if (inner instanceof ObjectSchema) {
|
||||
ObjectSchema op = (ObjectSchema) inner;
|
||||
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
||||
@@ -801,12 +799,12 @@ public class InlineModelResolver {
|
||||
if (existing != null) {
|
||||
Schema schema = new Schema().$ref(existing);
|
||||
schema.setRequired(op.getRequired());
|
||||
ap.setItems(schema);
|
||||
property.setItems(schema);
|
||||
} else {
|
||||
modelName = addSchemas(modelName, innerModel);
|
||||
Schema schema = new Schema().$ref(modelName);
|
||||
schema.setRequired(op.getRequired());
|
||||
ap.setItems(schema);
|
||||
property.setItems(schema);
|
||||
}
|
||||
}
|
||||
} else if (ModelUtils.isComposedSchema(inner)) {
|
||||
@@ -815,7 +813,7 @@ public class InlineModelResolver {
|
||||
innerModelName = addSchemas(innerModelName, inner);
|
||||
Schema schema = new Schema().$ref(innerModelName);
|
||||
schema.setRequired(inner.getRequired());
|
||||
ap.setItems(schema);
|
||||
property.setItems(schema);
|
||||
} else {
|
||||
LOGGER.debug("Schema not yet handled in model resolver: {}", inner);
|
||||
}
|
||||
|
||||
+9
-7
@@ -499,7 +499,7 @@ public class OpenAPINormalizer {
|
||||
}
|
||||
|
||||
if (StringUtils.isNotEmpty(schema.get$ref())) {
|
||||
// not need to process $ref
|
||||
// no need to process $ref
|
||||
return schema;
|
||||
}
|
||||
|
||||
@@ -509,9 +509,10 @@ public class OpenAPINormalizer {
|
||||
visitedSchemas.add(schema);
|
||||
}
|
||||
|
||||
if (schema instanceof ArraySchema) { // array
|
||||
normalizeArraySchema(schema);
|
||||
normalizeSchema(schema.getItems(), visitedSchemas);
|
||||
if (ModelUtils.isArraySchema(schema)) { // array
|
||||
Schema result = normalizeArraySchema(schema);
|
||||
normalizeSchema(result.getItems(), visitedSchemas);
|
||||
return result;
|
||||
} else if (schema.getAdditionalProperties() instanceof Schema) { // map
|
||||
normalizeMapSchema(schema);
|
||||
normalizeSchema((Schema) schema.getAdditionalProperties(), visitedSchemas);
|
||||
@@ -566,7 +567,8 @@ public class OpenAPINormalizer {
|
||||
}
|
||||
|
||||
private Schema normalizeArraySchema(Schema schema) {
|
||||
return processSetArraytoNullable(schema);
|
||||
Schema result = processNormalize31Spec(schema, new HashSet<>());
|
||||
return processSetArraytoNullable(result);
|
||||
}
|
||||
|
||||
private Schema normalizeMapSchema(Schema schema) {
|
||||
@@ -594,7 +596,7 @@ public class OpenAPINormalizer {
|
||||
}
|
||||
for (Map.Entry<String, Schema> propertiesEntry : properties.entrySet()) {
|
||||
Schema property = propertiesEntry.getValue();
|
||||
Schema newProperty = normalizeSchema(property, visitedSchemas);
|
||||
Schema newProperty = normalizeSchema(property, new HashSet<>());
|
||||
propertiesEntry.setValue(newProperty);
|
||||
}
|
||||
}
|
||||
@@ -1222,7 +1224,7 @@ public class OpenAPINormalizer {
|
||||
// only one item (type) left
|
||||
if (schema.getTypes().size() == 1) {
|
||||
String type = String.valueOf(schema.getTypes().iterator().next());
|
||||
if ("array".equals(type)) {
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema as = new ArraySchema();
|
||||
as.setDescription(schema.getDescription());
|
||||
as.setDefault(schema.getDefault());
|
||||
|
||||
+4
-5
@@ -84,10 +84,9 @@ public class ExampleGenerator {
|
||||
}
|
||||
|
||||
if (ModelUtils.isArraySchema(responseSchema)) { // array of schema
|
||||
ArraySchema as = (ArraySchema) responseSchema;
|
||||
if (as.getItems() != null) { // array of primitive types
|
||||
if (ModelUtils.getSchemaItems(responseSchema) != null) { // array of primitive types
|
||||
return generate((Map<String, Object>) responseSchema.getExample(),
|
||||
new ArrayList<>(producesInfo), as);
|
||||
new ArrayList<>(producesInfo), responseSchema);
|
||||
} else {
|
||||
// TODO log warning message as such case is not handled at the moment
|
||||
return null;
|
||||
@@ -248,9 +247,9 @@ public class ExampleGenerator {
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
} else if (ModelUtils.isArraySchema(property)) {
|
||||
Schema innerType = ((ArraySchema) property).getItems();
|
||||
Schema innerType = ModelUtils.getSchemaItems(property);
|
||||
if (innerType != null) {
|
||||
int arrayLength = null == ((ArraySchema) property).getMaxItems() ? 2 : ((ArraySchema) property).getMaxItems();
|
||||
int arrayLength = null == property.getMaxItems() ? 2 : property.getMaxItems();
|
||||
// avoid memory issues by limiting to max. 5 items
|
||||
arrayLength = Math.min(arrayLength, 5);
|
||||
Object[] objectProperties = new Object[arrayLength];
|
||||
|
||||
+1
-2
@@ -128,8 +128,7 @@ public class XmlExampleGenerator {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema as = (ArraySchema) schema;
|
||||
Schema inner = as.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(schema);
|
||||
boolean wrapped = false;
|
||||
if (schema.getXml() != null && schema.getXml().getWrapped() != null && schema.getXml().getWrapped()) {
|
||||
wrapped = true;
|
||||
|
||||
+1
-2
@@ -532,8 +532,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
|
||||
}
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
String itemType = getTypeDeclaration(inner);
|
||||
if (itemType.startsWith("OpenAPI.")) {
|
||||
return itemType + "_Vector";
|
||||
|
||||
+5
-7
@@ -188,10 +188,9 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
if (inner == null) {
|
||||
LOGGER.warn("{}(array property) does not have a proper inner type defined", ap.getName());
|
||||
LOGGER.warn("{}(array property) does not have a proper inner type defined", p.getName());
|
||||
// TODO maybe better defaulting to StringProperty than returning null
|
||||
return null;
|
||||
}
|
||||
@@ -220,13 +219,12 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
||||
@Override
|
||||
public String toDefaultValue(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
final ArraySchema ap = (ArraySchema) p;
|
||||
final String pattern = "new ArrayList<%s>()";
|
||||
if (ap.getItems() == null) {
|
||||
if (ModelUtils.getSchemaItems(p) == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return String.format(Locale.ROOT, pattern, getTypeDeclaration(ap.getItems()));
|
||||
return String.format(Locale.ROOT, pattern, getTypeDeclaration(ModelUtils.getSchemaItems(p)));
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
final MapSchema ap = (MapSchema) p;
|
||||
final String pattern = "new HashMap<%s>()";
|
||||
@@ -318,7 +316,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
example = "new " + getTypeDeclaration(p) + "{" + toExampleValue(
|
||||
((ArraySchema) p).getItems()) + "}";
|
||||
ModelUtils.getSchemaItems(p)) + "}";
|
||||
} else if (ModelUtils.isBooleanSchema(p)) {
|
||||
example = String.valueOf(!"false".equals(example));
|
||||
} else if (ModelUtils.isByteArraySchema(p)) {
|
||||
|
||||
+7
-7
@@ -585,7 +585,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
||||
List<CodegenProperty> allOf = composedSchemas.getAllOf();
|
||||
if (allOf != null) {
|
||||
for (CodegenProperty property : allOf) {
|
||||
property.name = patchPropertyName(model, property.baseType);
|
||||
property.name = patchPropertyName(model, camelize(property.baseType));
|
||||
patchPropertyVendorExtensions(property);
|
||||
}
|
||||
}
|
||||
@@ -594,7 +594,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
||||
if (anyOf != null) {
|
||||
removePropertiesDeclaredInComposedTypes(objs, model, anyOf);
|
||||
for (CodegenProperty property : anyOf) {
|
||||
property.name = patchPropertyName(model, property.baseType);
|
||||
property.name = patchPropertyName(model, camelize(property.baseType));
|
||||
property.isNullable = true;
|
||||
patchPropertyVendorExtensions(property);
|
||||
}
|
||||
@@ -604,7 +604,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
||||
if (oneOf != null) {
|
||||
removePropertiesDeclaredInComposedTypes(objs, model, oneOf);
|
||||
for (CodegenProperty property : oneOf) {
|
||||
property.name = patchPropertyName(model, property.baseType);
|
||||
property.name = patchPropertyName(model, camelize(property.baseType));
|
||||
property.isNullable = true;
|
||||
patchPropertyVendorExtensions(property);
|
||||
}
|
||||
@@ -1433,12 +1433,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
||||
* @param arr The input array property
|
||||
* @return The type declaration when the type is an array of arrays.
|
||||
*/
|
||||
private String getArrayTypeDeclaration(ArraySchema arr) {
|
||||
private String getArrayTypeDeclaration(Schema arr) {
|
||||
// TODO: collection type here should be fully qualified namespace to avoid model conflicts
|
||||
// This supports arrays of arrays.
|
||||
String arrayType = typeMapping.get("array");
|
||||
StringBuilder instantiationType = new StringBuilder(arrayType);
|
||||
Schema items = arr.getItems();
|
||||
Schema items = ModelUtils.getSchemaItems(arr);
|
||||
String nestedType = getTypeDeclaration(items);
|
||||
// TODO: We may want to differentiate here between generics and primitive arrays.
|
||||
instantiationType.append("<").append(nestedType).append(">");
|
||||
@@ -1448,7 +1448,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
||||
@Override
|
||||
public String toInstantiationType(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
return getArrayTypeDeclaration((ArraySchema) p);
|
||||
return getArrayTypeDeclaration(p);
|
||||
}
|
||||
return super.toInstantiationType(p);
|
||||
}
|
||||
@@ -1456,7 +1456,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
return getArrayTypeDeclaration((ArraySchema) p);
|
||||
return getArrayTypeDeclaration(p);
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
// Should we also support maps of maps?
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-1
@@ -512,7 +512,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
|
||||
Schema<?> schema = unaliasSchema(p);
|
||||
Schema<?> target = ModelUtils.isGenerateAliasAsModel() ? p : schema;
|
||||
if (ModelUtils.isArraySchema(target)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) schema);
|
||||
Schema<?> items = ModelUtils.getSchemaItems(schema);
|
||||
return getSchemaType(target) + "<" + getTypeDeclaration(items) + ">";
|
||||
}
|
||||
if (ModelUtils.isMapSchema(target)) {
|
||||
|
||||
+2
-4
@@ -293,8 +293,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "LIST [" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -578,8 +577,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
|
||||
// String inner = toModelName(getSchemaType(additionalProperties2));
|
||||
// return instantiationTypes.get("map") + " [" + inner + "]";
|
||||
// } else if (ModelUtils.isArraySchema(p)) {
|
||||
// ArraySchema ap = (ArraySchema) p;
|
||||
// String inner = toModelName(getSchemaType(ap.getItems()));
|
||||
// String inner = toModelName(getSchemaType(ModelUtils.getSchemaItems(p)));
|
||||
// return instantiationTypes.get("array") + " [" + inner + "]";
|
||||
// } else {
|
||||
// return null;
|
||||
|
||||
+4
-4
@@ -855,12 +855,12 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
|
||||
* @param arr The input array property
|
||||
* @return The type declaration when the type is an array of arrays.
|
||||
*/
|
||||
private String getArrayTypeDeclaration(ArraySchema arr) {
|
||||
private String getArrayTypeDeclaration(Schema arr) {
|
||||
// TODO: collection type here should be fully qualified namespace to avoid model conflicts
|
||||
// This supports arrays of arrays.
|
||||
String arrayType = typeMapping.get("array");
|
||||
StringBuilder instantiationType = new StringBuilder(arrayType);
|
||||
Schema items = arr.getItems();
|
||||
Schema items = ModelUtils.getSchemaItems(arr);
|
||||
String nestedType = getTypeDeclaration(items);
|
||||
// TODO: We may want to differentiate here between generics and primitive arrays.
|
||||
return nestedType + "[]";
|
||||
@@ -869,7 +869,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
|
||||
@Override
|
||||
public String toInstantiationType(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
return getArrayTypeDeclaration((ArraySchema) p);
|
||||
return getArrayTypeDeclaration(p);
|
||||
}
|
||||
return super.toInstantiationType(p);
|
||||
}
|
||||
@@ -877,7 +877,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
return getArrayTypeDeclaration((ArraySchema) p);
|
||||
return getArrayTypeDeclaration(p);
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
// Should we also support maps of maps?
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -360,8 +360,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
// In OAS 3.0.x, the array "items" attribute is required.
|
||||
// In OAS >= 3.1, the array "items" attribute is optional such that the OAS
|
||||
// specification is aligned with the JSON schema specification.
|
||||
|
||||
+1
-2
@@ -273,8 +273,7 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Object ap = p.getAdditionalProperties();
|
||||
|
||||
+1
-1
@@ -946,7 +946,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
Schema<?> schema = unaliasSchema(p);
|
||||
Schema<?> target = ModelUtils.isGenerateAliasAsModel() ? p : schema;
|
||||
if (ModelUtils.isArraySchema(target)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) schema);
|
||||
Schema<?> items = ModelUtils.getSchemaItems(schema);
|
||||
return getSchemaType(target) + "<" + getBeanValidation(items) + getTypeDeclaration(items) + ">";
|
||||
} else if (ModelUtils.isMapSchema(target)) {
|
||||
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
|
||||
|
||||
+1
-2
@@ -346,8 +346,7 @@ public abstract class AbstractJuliaCodegen extends DefaultCodegen {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema schema) {
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema ap = (ArraySchema) schema;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(schema);
|
||||
return getSchemaType(schema) + "{" + getTypeDeclaration(inner) + "}";
|
||||
} else if (ModelUtils.isSet(schema)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(schema);
|
||||
|
||||
+2
-2
@@ -359,7 +359,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
||||
Schema<?> schema = unaliasSchema(p);
|
||||
Schema<?> target = ModelUtils.isGenerateAliasAsModel() ? p : schema;
|
||||
if (ModelUtils.isArraySchema(target)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) schema);
|
||||
Schema<?> items = ModelUtils.getSchemaItems( schema);
|
||||
return getSchemaType(target) + "<" + getTypeDeclaration(items) + ">";
|
||||
} else if (ModelUtils.isMapSchema(target)) {
|
||||
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
|
||||
@@ -1104,7 +1104,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
||||
}
|
||||
|
||||
StringBuilder defaultContent = new StringBuilder();
|
||||
Schema<?> itemsSchema = getSchemaItems((ArraySchema) schema);
|
||||
Schema<?> itemsSchema = ModelUtils.getSchemaItems(schema);
|
||||
_default.elements().forEachRemaining((element) -> {
|
||||
String defaultValue = element.asText();
|
||||
if (defaultValue != null) {
|
||||
|
||||
+2
-3
@@ -355,11 +355,10 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
if (inner == null) {
|
||||
LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string",
|
||||
ap.getName());
|
||||
p.getName());
|
||||
inner = new StringSchema().description("TODO default missing array inner type to string");
|
||||
}
|
||||
return getTypeDeclaration(inner) + "[]";
|
||||
|
||||
+4
-4
@@ -105,6 +105,8 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
// from https://docs.python.org/3/reference/lexical_analysis.html#keywords
|
||||
setReservedWordsLowerCase(
|
||||
Arrays.asList(
|
||||
// pydantic
|
||||
"field",
|
||||
// local variable name used in API methods (endpoints)
|
||||
"all_params", "resource_path", "path_params", "query_params",
|
||||
"header_params", "form_params", "local_var_files", "body_params", "auth_settings",
|
||||
@@ -489,8 +491,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) {
|
||||
includedSchemas.add(schema);
|
||||
}
|
||||
ArraySchema arrayschema = (ArraySchema) schema;
|
||||
example = "[\n" + indentationString + toExampleValueRecursive(arrayschema.getItems(), includedSchemas, indentation + 1) + "\n" + indentationString + "]";
|
||||
example = "[\n" + indentationString + toExampleValueRecursive(ModelUtils.getSchemaItems(schema), includedSchemas, indentation + 1) + "\n" + indentationString + "]";
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) {
|
||||
includedSchemas.add(schema);
|
||||
@@ -691,8 +692,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
p = ModelUtils.unaliasSchema(openAPI, p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getCollectionItemTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -351,8 +351,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+2
-4
@@ -454,8 +454,7 @@ public abstract class AbstractPythonPydanticV1Codegen extends DefaultCodegen imp
|
||||
if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) {
|
||||
includedSchemas.add(schema);
|
||||
}
|
||||
ArraySchema arrayschema = (ArraySchema) schema;
|
||||
example = "[\n" + indentationString + toExampleValueRecursive(arrayschema.getItems(), includedSchemas, indentation + 1) + "\n" + indentationString + "]";
|
||||
example = "[\n" + indentationString + toExampleValueRecursive(ModelUtils.getSchemaItems(schema), includedSchemas, indentation + 1) + "\n" + indentationString + "]";
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) {
|
||||
includedSchemas.add(schema);
|
||||
@@ -656,8 +655,7 @@ public abstract class AbstractPythonPydanticV1Codegen extends DefaultCodegen imp
|
||||
p = ModelUtils.unaliasSchema(openAPI, p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-1
@@ -119,7 +119,7 @@ abstract public class AbstractRubyCodegen extends DefaultCodegen implements Code
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema schema) {
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
Schema inner = ((ArraySchema) schema).getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(schema);
|
||||
return getSchemaType(schema) + "<" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(schema);
|
||||
|
||||
+1
-2
@@ -236,8 +236,7 @@ public abstract class AbstractRustCodegen extends DefaultCodegen implements Code
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
String innerType = getTypeDeclaration(inner);
|
||||
return typeMapping.get("array") + "<" + innerType + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
|
||||
+6
-9
@@ -371,7 +371,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
||||
Schema<?> schema = unaliasSchema(p);
|
||||
Schema<?> target = ModelUtils.isGenerateAliasAsModel() ? p : schema;
|
||||
if (ModelUtils.isArraySchema(target)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) schema);
|
||||
Schema<?> items = ModelUtils.getSchemaItems(schema);
|
||||
return getSchemaType(target) + "[" + getTypeDeclaration(items) + "]";
|
||||
} else if (ModelUtils.isMapSchema(target)) {
|
||||
Schema<?> inner = ModelUtils.getAdditionalProperties(target);
|
||||
@@ -404,9 +404,8 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return instantiationTypes.get("map") + "[String, " + inner + "]";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
return (ModelUtils.isSet(ap) ? instantiationTypes.get("set") : instantiationTypes.get("array")) + "[" + inner + "]";
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
return (ModelUtils.isSet(p) ? instantiationTypes.get("set") : instantiationTypes.get("array")) + "[" + inner + "]";
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
@@ -433,10 +432,9 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "new HashMap[String, " + inner + "]() ";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
String genericType;
|
||||
if (ModelUtils.isSet(ap)) {
|
||||
if (ModelUtils.isSet(p)) {
|
||||
genericType = instantiationTypes.get("set");
|
||||
} else {
|
||||
genericType = instantiationTypes.get("array");
|
||||
@@ -475,8 +473,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
|
||||
public CodegenProperty fromProperty(String name, Schema p, boolean required) {
|
||||
CodegenProperty prop = super.fromProperty(name, p, required);
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema as = (ArraySchema) p;
|
||||
if (ModelUtils.isSet(as)) {
|
||||
if (ModelUtils.isSet(p)) {
|
||||
prop.containerType = "set";
|
||||
}
|
||||
}
|
||||
|
||||
+3
-5
@@ -624,7 +624,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) p);
|
||||
Schema<?> items = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(unaliasSchema(items)) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema<?> inner = getSchemaAdditionalProperties(p);
|
||||
@@ -647,8 +647,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
// handle enums of various data types
|
||||
Schema inner;
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema mp1 = (ArraySchema) p;
|
||||
inner = mp1.getItems();
|
||||
inner = ModelUtils.getSchemaItems(p);
|
||||
return this.getSchemaType(p) + "<" + this.getParameterDataType(parameter, inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -1177,8 +1176,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
|
||||
return filteredSchemas.stream().map(schema -> {
|
||||
String schemaType = getSchemaType(schema);
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema ap = (ArraySchema) schema;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(schema);
|
||||
schemaType = schemaType + "<" + getSchemaType(inner) + ">";
|
||||
}
|
||||
return schemaType;
|
||||
|
||||
+1
-2
@@ -221,8 +221,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-1
@@ -223,7 +223,7 @@ public class ApexClientCodegen extends AbstractApexCodegen {
|
||||
public String toDefaultValue(Schema p) {
|
||||
String out = null;
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
Schema inner = ((ArraySchema) p).getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
out = String.format(
|
||||
Locale.ROOT,
|
||||
"new List<%s>()",
|
||||
|
||||
+1
-2
@@ -429,8 +429,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -1515,8 +1515,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
|
||||
}
|
||||
return instantiationTypes.get("map") + "<String, " + inner + ">";
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arraySchema = (ArraySchema) schema;
|
||||
String inner = getSchemaType(arraySchema.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(schema));
|
||||
return instantiationTypes.get("array") + "<" + inner + ">";
|
||||
} else {
|
||||
return null;
|
||||
|
||||
+1
-2
@@ -1091,8 +1091,7 @@ public class CSharpReducedClientCodegen extends AbstractCSharpCodegen {
|
||||
}
|
||||
return instantiationTypes.get("map") + "<String, " + inner + ">";
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arraySchema = (ArraySchema) schema;
|
||||
String inner = getSchemaType(arraySchema.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(schema));
|
||||
return instantiationTypes.get("array") + "<" + inner + ">";
|
||||
} else {
|
||||
return null;
|
||||
|
||||
+2
-4
@@ -165,10 +165,8 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi
|
||||
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (p instanceof ArraySchema) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "(s/coll-of " + getTypeDeclaration(inner) + ")";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Object ap = p.getAdditionalProperties();
|
||||
|
||||
+1
-2
@@ -108,8 +108,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+2
-4
@@ -381,8 +381,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
|
||||
String openAPIType = getSchemaType(p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||
}
|
||||
if (ModelUtils.isMapSchema(p)) {
|
||||
@@ -474,8 +473,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "std::map<std::string, " + inner + ">()";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (!languageSpecificPrimitives.contains(inner)) {
|
||||
inner = "std::shared_ptr<" + inner + ">";
|
||||
}
|
||||
|
||||
+2
-4
@@ -189,8 +189,7 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements
|
||||
String openAPIType = getSchemaType(p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -232,8 +231,7 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
return "QMap<QString, " + getTypeDeclaration(inner) + ">()";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "QList<" + getTypeDeclaration(inner) + ">()";
|
||||
} else if (ModelUtils.isStringSchema(p)) {
|
||||
return "QString(\"\")";
|
||||
|
||||
+2
-4
@@ -367,8 +367,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
||||
String openAPIType = getSchemaType(p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -407,8 +406,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "std::map<utility::string_t, " + inner + ">()";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (!languageSpecificPrimitives.contains(inner)) {
|
||||
inner = "std::shared_ptr<" + inner + ">";
|
||||
}
|
||||
|
||||
+3
-6
@@ -379,8 +379,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
|
||||
String openAPIType = getSchemaType(p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -469,12 +468,10 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "std::map<std::string, " + inner + ">()";
|
||||
} else if (ModelUtils.isSet(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
return "std::set<" + inner + ">()";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
return "std::vector<" + inner + ">()";
|
||||
} else if (ModelUtils.isModel(p)) {
|
||||
String modelName = getTypeDeclaration(p);
|
||||
|
||||
+2
-4
@@ -351,8 +351,7 @@ public class CppRestbedServerDeprecatedCodegen extends AbstractCppCodegen {
|
||||
String openAPIType = getSchemaType(p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -433,8 +432,7 @@ public class CppRestbedServerDeprecatedCodegen extends AbstractCppCodegen {
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "std::map<std::string, " + inner + ">()";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (!languageSpecificPrimitives.contains(inner)) {
|
||||
inner = "std::shared_ptr<" + inner + ">";
|
||||
}
|
||||
|
||||
+1
-2
@@ -416,8 +416,7 @@ public class CppUE4ClientCodegen extends AbstractCppCodegen {
|
||||
String openAPIType = getSchemaType(p);
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(ap.getItems()) + ">";
|
||||
return getSchemaType(p) + "<" + getTypeDeclaration(ModelUtils.getSchemaItems(p)) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
return getSchemaType(p) + "<FString, " + getTypeDeclaration(ModelUtils.getAdditionalProperties(p)) + ">";
|
||||
}
|
||||
|
||||
+1
-1
@@ -814,7 +814,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema schema) {
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
Schema inner = ((ArraySchema) schema).getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(schema);
|
||||
return getSchemaType(schema) + "(" + getTypeDeclaration(inner) + ")";
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(schema);
|
||||
|
||||
+1
-2
@@ -557,8 +557,7 @@ public class ElixirClientCodegen extends DefaultCodegen {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+2
-4
@@ -244,8 +244,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String toInstantiationType(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
return instantiationTypes.get("array") + " " + inner;
|
||||
} else {
|
||||
return null;
|
||||
@@ -464,8 +463,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getTypeDeclaration(inner);
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+4
-8
@@ -141,7 +141,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
|
||||
public CodegenModel fromModel(String name, Schema model) {
|
||||
CodegenModel cm = super.fromModel(name, model);
|
||||
if(ModelUtils.isArraySchema(model)) {
|
||||
return new CodegenArrayModel(cm, (ArraySchema) model);
|
||||
return new CodegenArrayModel(cm, model);
|
||||
} else {
|
||||
return cm;
|
||||
}
|
||||
@@ -156,12 +156,9 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
|
||||
public String getTypeDeclaration(Schema schema) {
|
||||
String typeDeclaration = super.getSchemaType(schema);
|
||||
if(ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arraySchema = (ArraySchema) schema;
|
||||
String complexType = getSchemaType(arraySchema.getItems());
|
||||
|
||||
String complexType = getSchemaType(ModelUtils.getSchemaItems(schema));
|
||||
StringBuilder sb = new StringBuilder("list(");
|
||||
sb.append(complexType);
|
||||
|
||||
return sb.append(")").toString();
|
||||
} else if (typeMapping.containsKey(typeDeclaration)) {
|
||||
return typeMapping.get(typeDeclaration);
|
||||
@@ -174,8 +171,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
|
||||
public String getSchemaType(Schema schema) {
|
||||
String schemaType = super.getSchemaType(schema);
|
||||
if(ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arraySchema = (ArraySchema) schema;
|
||||
String complexType = getSchemaType(arraySchema.getItems());
|
||||
String complexType = getSchemaType(ModelUtils.getSchemaItems(schema));
|
||||
|
||||
StringBuilder sb = new StringBuilder("list(");
|
||||
sb.append(complexType);
|
||||
@@ -446,7 +442,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
|
||||
Integer minItems;
|
||||
Integer maxItems;
|
||||
|
||||
public CodegenArrayModel(CodegenModel cm, ArraySchema schema) {
|
||||
public CodegenArrayModel(CodegenModel cm, Schema schema) {
|
||||
super();
|
||||
|
||||
// Copy all fields of CodegenModel
|
||||
|
||||
+1
-2
@@ -124,8 +124,7 @@ public class GraphQLNodeJSExpressServerCodegen extends AbstractGraphQLCodegen im
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
|
||||
// IMPORTANT NOTE we add the braces within template because there we have the possibility to differentiate
|
||||
// between some specific types for GraphQL:
|
||||
|
||||
+2
-4
@@ -653,8 +653,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -687,8 +686,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
|
||||
String inner = getSchemaType(additionalProperties2);
|
||||
return "(Map.Map Text " + inner + ")";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
return getSchemaType(ap.getItems());
|
||||
return getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
+2
-4
@@ -372,8 +372,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -419,8 +418,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
|
||||
String inner = getSchemaType(additionalProperties2);
|
||||
return "(Map.Map Text " + inner + ")";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
// Return only the inner type; the wrapping with QueryList is done
|
||||
// somewhere else, where we have access to the collection format.
|
||||
return inner;
|
||||
|
||||
+2
-4
@@ -295,8 +295,7 @@ public class HaskellYesodServerCodegen extends DefaultCodegen implements Codegen
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -342,8 +341,7 @@ public class HaskellYesodServerCodegen extends DefaultCodegen implements Codegen
|
||||
String inner = getSchemaType(additionalProperties2);
|
||||
return "(Map.Map Text " + inner + ")";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
// Return only the inner type; the wrapping with QueryList is done
|
||||
// somewhere else, where we have access to the collection format.
|
||||
return inner;
|
||||
|
||||
+1
-2
@@ -210,8 +210,7 @@ public class JMeterClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+4
-5
@@ -610,8 +610,7 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -872,9 +871,9 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
|
||||
codegenModel = JavascriptApolloClientCodegen.reconcileInlineEnums(codegenModel, parentCodegenModel);
|
||||
}
|
||||
if (ModelUtils.isArraySchema(model)) {
|
||||
ArraySchema am = (ArraySchema) model;
|
||||
if (codegenModel != null && am.getItems() != null) {
|
||||
String itemType = getSchemaType(am.getItems());
|
||||
Schema inner = ModelUtils.getSchemaItems(model);
|
||||
if (codegenModel != null && inner != null) {
|
||||
String itemType = getSchemaType(inner);
|
||||
codegenModel.vendorExtensions.put("x-is-array", true);
|
||||
codegenModel.vendorExtensions.put("x-item-type", itemType);
|
||||
}
|
||||
|
||||
+3
-5
@@ -610,8 +610,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -874,9 +873,8 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
|
||||
}
|
||||
}
|
||||
if (ModelUtils.isArraySchema(model)) {
|
||||
ArraySchema am = (ArraySchema) model;
|
||||
if (codegenModel != null && am.getItems() != null) {
|
||||
String itemType = getSchemaType(am.getItems());
|
||||
if (codegenModel != null && ModelUtils.getSchemaItems(model) != null) {
|
||||
String itemType = getSchemaType(ModelUtils.getSchemaItems(model));
|
||||
codegenModel.vendorExtensions.put("x-is-array", true);
|
||||
codegenModel.vendorExtensions.put("x-item-type", itemType);
|
||||
}
|
||||
|
||||
+1
-2
@@ -225,8 +225,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "<!" + getTypeDeclaration(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+37
-27
@@ -109,11 +109,11 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
|
||||
var additionalProperties = additionalProperties();
|
||||
|
||||
if(additionalProperties.containsKey(BODY_VARIABLES)) {
|
||||
if (additionalProperties.containsKey(BODY_VARIABLES)) {
|
||||
bodyVariables = Arrays.asList(additionalProperties.get(BODY_VARIABLES).toString().split("-"));
|
||||
}
|
||||
|
||||
if(additionalProperties.containsKey(CUSTOM_HEADERS)) {
|
||||
if (additionalProperties.containsKey(CUSTOM_HEADERS)) {
|
||||
customHeaders = Arrays.asList(additionalProperties.get(CUSTOM_HEADERS).toString().split("&"));
|
||||
}
|
||||
}
|
||||
@@ -138,15 +138,15 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
|
||||
@Override
|
||||
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
|
||||
OperationsMap results = super.postProcessOperationsWithModels(objs, allModels);
|
||||
OperationsMap results = super.postProcessOperationsWithModels(objs, allModels);
|
||||
|
||||
OperationMap ops = results.getOperations();
|
||||
List<CodegenOperation> opList = ops.getOperation();
|
||||
|
||||
for(CodegenOperation codegenOperation : opList) {
|
||||
for (CodegenOperation codegenOperation : opList) {
|
||||
List<RequestItem> requests = getRequests(codegenOperation);
|
||||
|
||||
if(requests != null) {
|
||||
if (requests != null) {
|
||||
codegenOperation.vendorExtensions.put("requests", requests);
|
||||
//Adding to each operation for now, we may be smarter later on
|
||||
codegenOperation.vendorExtensions.put("customHeaders", customHeaders);
|
||||
@@ -158,7 +158,7 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
List<RequestItem> getRequests(CodegenOperation codegenOperation) {
|
||||
List<RequestItem> items = new ArrayList<>();
|
||||
|
||||
if(codegenOperation.getHasBodyParam()) {
|
||||
if (codegenOperation.getHasBodyParam()) {
|
||||
// operation with bodyParam
|
||||
if (requestParameterGeneration.equalsIgnoreCase("Schema")) {
|
||||
// get from schema
|
||||
@@ -173,7 +173,7 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
// find in components/examples
|
||||
for (Map.Entry<String, Example> entry : codegenOperation.bodyParam.getContent().get("application/json").getExamples().entrySet()) {
|
||||
String exampleRef = entry.getValue().get$ref();
|
||||
if(exampleRef != null){
|
||||
if (exampleRef != null) {
|
||||
Example example = this.openAPI.getComponents().getExamples().get(extractExampleByName(exampleRef));
|
||||
String exampleAsString = getJsonFromExample(example);
|
||||
items.add(new RequestItem(example.getSummary(), exampleAsString));
|
||||
@@ -200,11 +200,11 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
}
|
||||
|
||||
private List<RequestItem> handleCustomVariablesInRequests(List<RequestItem> items) {
|
||||
if(!bodyVariables.isEmpty()){
|
||||
for(var item : items){
|
||||
for(var customVariable: bodyVariables){
|
||||
if (!bodyVariables.isEmpty()) {
|
||||
for (var item : items) {
|
||||
for (var customVariable : bodyVariables) {
|
||||
var body = item.getBody();
|
||||
if(body != null){
|
||||
if (body != null) {
|
||||
body = body.replace(customVariable, "{{" + customVariable + "}}");
|
||||
item.setBody(body);
|
||||
}
|
||||
@@ -269,7 +269,7 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + codegenProperty.baseName + JSON_ESCAPE_DOUBLE_QUOTE + ": " +
|
||||
JSON_ESCAPE_DOUBLE_QUOTE + "<" + getType(codegenProperty) + ">" + JSON_ESCAPE_DOUBLE_QUOTE;
|
||||
|
||||
if(counter < numVars) {
|
||||
if (counter < numVars) {
|
||||
// add comma unless last attribute
|
||||
ret = ret + "," + JSON_ESCAPE_NEW_LINE + " ";
|
||||
}
|
||||
@@ -283,9 +283,9 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
}
|
||||
|
||||
public String getType(CodegenProperty codegenProperty) {
|
||||
if(codegenProperty.isNumeric) {
|
||||
if (codegenProperty.isNumeric) {
|
||||
return "number";
|
||||
} else if(codegenProperty.isDate) {
|
||||
} else if (codegenProperty.isDate) {
|
||||
return "date";
|
||||
} else {
|
||||
return "string";
|
||||
@@ -316,14 +316,14 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
public String getJsonFromExample(Example example) {
|
||||
String ret = "";
|
||||
|
||||
if(example == null) {
|
||||
if (example == null) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if(example.getValue() instanceof ObjectNode) {
|
||||
ret = convertToJson((ObjectNode)example.getValue());
|
||||
} else if(example.getValue() instanceof LinkedHashMap) {
|
||||
ret = convertToJson((LinkedHashMap)example.getValue());
|
||||
if (example.getValue() instanceof ObjectNode) {
|
||||
ret = convertToJson((ObjectNode) example.getValue());
|
||||
} else if (example.getValue() instanceof LinkedHashMap) {
|
||||
ret = convertToJson((LinkedHashMap) example.getValue());
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -350,9 +350,9 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
String key = mapElement.getKey();
|
||||
Object value = mapElement.getValue();
|
||||
|
||||
if(value instanceof String) {
|
||||
if (value instanceof String) {
|
||||
// unescape double quotes already escaped
|
||||
value = ((String)value).replace("\\\"", "\"");
|
||||
value = ((String) value).replace("\\\"", "\"");
|
||||
|
||||
ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " +
|
||||
JSON_ESCAPE_DOUBLE_QUOTE + value + JSON_ESCAPE_DOUBLE_QUOTE;
|
||||
@@ -369,20 +369,21 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
jsonBuilder.append(JSON_ESCAPE_DOUBLE_QUOTE).append(items.get(i)).append(JSON_ESCAPE_DOUBLE_QUOTE);
|
||||
if (i < items.size() - 1) {jsonBuilder.append(",");}
|
||||
if (i < items.size() - 1) {
|
||||
jsonBuilder.append(",");
|
||||
}
|
||||
}
|
||||
jsonBuilder.append("]");
|
||||
|
||||
ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + jsonBuilder ;
|
||||
}
|
||||
else {
|
||||
ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + jsonBuilder;
|
||||
} else {
|
||||
LOGGER.warn("Value type unrecognised: " + value.getClass());
|
||||
//WARNING: here we are undoing what is done in "add comma unless last attribute"
|
||||
// This is meant to avoid dangling commas if we encounter an unknown type
|
||||
ret = ret.substring(0, ret.length() - 3);
|
||||
}
|
||||
|
||||
if(counter < numVars ) {
|
||||
if (counter < numVars) {
|
||||
// add comma unless last attribute
|
||||
ret = ret + "," + JSON_ESCAPE_NEW_LINE + " ";
|
||||
}
|
||||
@@ -394,4 +395,13 @@ public class JetbrainsHttpClientClientCodegen extends DefaultCodegen implements
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public String escapeUnsafeCharacters(String input) {
|
||||
return input;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String escapeQuotationMark(String input) {
|
||||
return input;
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -383,8 +383,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getTypeDeclaration(inner);
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+2
-3
@@ -513,7 +513,7 @@ public class N4jsClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) p);
|
||||
Schema<?> items = ModelUtils.getSchemaItems(p);
|
||||
return getTypeDeclaration(unaliasSchema(items)) + "[]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
return "~Object+";
|
||||
@@ -544,8 +544,7 @@ public class N4jsClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
protected String getParameterDataType(Parameter parameter, Schema p) {
|
||||
// handle enums of various data types
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema mp1 = (ArraySchema) p;
|
||||
Schema<?> inner = mp1.getItems();
|
||||
Schema<?> inner = ModelUtils.getSchemaItems(p);
|
||||
return getParameterDataType(parameter, inner) + "[]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
return "~Object+";
|
||||
|
||||
+1
-2
@@ -275,8 +275,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
if (inner == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+7
-9
@@ -279,8 +279,8 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
}
|
||||
|
||||
private void collectEnumSchemas(String parentName, String sName, Schema schema) {
|
||||
if (schema instanceof ArraySchema) {
|
||||
collectEnumSchemas(parentName, sName, ((ArraySchema) schema).getItems());
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
collectEnumSchemas(parentName, sName, ModelUtils.getSchemaItems(schema));
|
||||
} else if (schema instanceof MapSchema && schema.getAdditionalProperties() instanceof Schema) {
|
||||
collectEnumSchemas(parentName, sName, (Schema) schema.getAdditionalProperties());
|
||||
} else if (isEnumSchema(schema)) {
|
||||
@@ -317,11 +317,10 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
collectEnumSchemas(pName, (Schema) schema.getAdditionalProperties());
|
||||
}
|
||||
|
||||
if (schema instanceof ArraySchema) {
|
||||
ArraySchema s = (ArraySchema) schema;
|
||||
if (s.getItems() != null) {
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
if (ModelUtils.getSchemaItems(schema) != null) {
|
||||
String pName = parentName != null ? parentName + "_" + sName : sName;
|
||||
collectEnumSchemas(pName, s.getItems());
|
||||
collectEnumSchemas(pName, ModelUtils.getSchemaItems(schema));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -581,11 +580,10 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
if (inner == null) {
|
||||
LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string",
|
||||
ap.getName());
|
||||
p.getName());
|
||||
inner = new StringSchema().description("TODO default missing array inner type to string");
|
||||
}
|
||||
return getTypeDeclaration(inner) + " list";
|
||||
|
||||
+1
-2
@@ -370,8 +370,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
String innerTypeDeclaration = getTypeDeclaration(inner);
|
||||
if (innerTypeDeclaration.endsWith("*")) {
|
||||
innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1);
|
||||
|
||||
+1
-2
@@ -261,8 +261,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+2
-2
@@ -271,7 +271,7 @@ public class PhpDataTransferClientCodegen extends AbstractPhpCodegen {
|
||||
Schema parameterSchema = ModelUtils.getReferencedSchema(openAPI, parameter.getSchema());
|
||||
// array
|
||||
if (ModelUtils.isArraySchema(parameterSchema)) {
|
||||
Schema itemSchema = ((ArraySchema) parameterSchema).getItems();
|
||||
Schema itemSchema = ModelUtils.getSchemaItems(parameterSchema);
|
||||
ArraySchema arraySchema = new ArraySchema();
|
||||
arraySchema.setMinItems(parameterSchema.getMinItems());
|
||||
arraySchema.setMaxItems(parameterSchema.getMaxItems());
|
||||
@@ -419,7 +419,7 @@ public class PhpDataTransferClientCodegen extends AbstractPhpCodegen {
|
||||
}
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
//Recursively process schema of array items
|
||||
generateContainerSchemas(openAPI, visitedSchemas, ((ArraySchema) schema).getItems());
|
||||
generateContainerSchemas(openAPI, visitedSchemas, ModelUtils.getSchemaItems(schema));
|
||||
isContainer = Boolean.TRUE;
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
//Recursively process schema of map items
|
||||
|
||||
+2
-2
@@ -248,7 +248,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen {
|
||||
Schema parameterSchema = ModelUtils.getReferencedSchema(openAPI, queryParameter.getSchema());
|
||||
// array
|
||||
if (ModelUtils.isArraySchema(parameterSchema)) {
|
||||
Schema itemSchema = ((ArraySchema) parameterSchema).getItems();
|
||||
Schema itemSchema = ModelUtils.getSchemaItems(parameterSchema);
|
||||
ArraySchema arraySchema = new ArraySchema();
|
||||
arraySchema.setMinItems(parameterSchema.getMinItems());
|
||||
arraySchema.setMaxItems(parameterSchema.getMaxItems());
|
||||
@@ -397,7 +397,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen {
|
||||
}
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
//Recursively process schema of array items
|
||||
generateContainerSchemas(openAPI, visitedSchemas, ((ArraySchema) schema).getItems());
|
||||
generateContainerSchemas(openAPI, visitedSchemas, ModelUtils.getSchemaItems(schema));
|
||||
isContainer = Boolean.TRUE;
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
//Recursively process schema of map items
|
||||
|
||||
+1
-2
@@ -175,8 +175,7 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -538,8 +538,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getTypeDeclaration(inner);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -998,8 +998,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getTypeDeclaration(inner) + "[]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
return "System.Collections.Hashtable";
|
||||
|
||||
+1
-2
@@ -608,8 +608,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -223,8 +223,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -535,8 +535,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -682,8 +682,7 @@ public class RustAxumServerCodegen extends AbstractRustCodegen implements Codege
|
||||
@Override
|
||||
public String toInstantiationType(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+9
-10
@@ -981,8 +981,7 @@ public class RustServerCodegen extends AbstractRustCodegen implements CodegenCon
|
||||
@Override
|
||||
public String toInstantiationType(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -1000,21 +999,21 @@ public class RustServerCodegen extends AbstractRustCodegen implements CodegenCon
|
||||
CodegenModel mdl = super.fromModel(name, model);
|
||||
|
||||
if (ModelUtils.isArraySchema(model)) {
|
||||
ArraySchema am = (ArraySchema) model;
|
||||
Schema inner = ModelUtils.getSchemaItems(model);
|
||||
String xmlName = null;
|
||||
|
||||
// Detect XML list where the inner item is defined directly.
|
||||
if ((am.getItems() != null) &&
|
||||
(am.getItems().getXml() != null)) {
|
||||
xmlName = am.getItems().getXml().getName();
|
||||
if ((inner != null) &&
|
||||
(inner.getXml() != null)) {
|
||||
xmlName = inner.getXml().getName();
|
||||
}
|
||||
|
||||
// Detect XML list where the inner item is a reference.
|
||||
if (am.getXml() != null && am.getXml().getWrapped() &&
|
||||
am.getItems() != null &&
|
||||
!StringUtils.isEmpty(am.getItems().get$ref())) {
|
||||
if (model.getXml() != null && model.getXml().getWrapped() &&
|
||||
inner != null &&
|
||||
!StringUtils.isEmpty(inner.get$ref())) {
|
||||
Schema inner_schema = allDefinitions.get(
|
||||
ModelUtils.getSimpleRef(am.getItems().get$ref()));
|
||||
ModelUtils.getSimpleRef(inner.get$ref()));
|
||||
|
||||
if (inner_schema.getXml() != null &&
|
||||
inner_schema.getXml().getName() != null) {
|
||||
|
||||
+2
-3
@@ -295,9 +295,8 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "Map[String, " + inner + "].empty ";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
if (ModelUtils.isSet(ap)) {
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (ModelUtils.isSet(p)) {
|
||||
return "Set[" + inner + "].empty ";
|
||||
}
|
||||
return "Seq[" + inner + "].empty ";
|
||||
|
||||
+1
-2
@@ -261,8 +261,7 @@ public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenCo
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -384,8 +384,7 @@ public class ScalaGatlingCodegen extends AbstractScalaCodegen implements Codegen
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -711,8 +711,7 @@ public class ScalaHttp4sServerCodegen extends DefaultCodegen implements CodegenC
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+2
-3
@@ -295,9 +295,8 @@ public class ScalaPekkoClientCodegen extends AbstractScalaCodegen implements Cod
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "Map[String, " + inner + "].empty ";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
if (ModelUtils.isSet(ap)) {
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (ModelUtils.isSet(p)) {
|
||||
return "Set[" + inner + "].empty ";
|
||||
}
|
||||
return "Seq[" + inner + "].empty ";
|
||||
|
||||
+1
-1
@@ -369,7 +369,7 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem
|
||||
}
|
||||
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
Schema items = ((ArraySchema) p).getItems();
|
||||
Schema items = ModelUtils.getSchemaItems(p);
|
||||
String inner = getSchemaType(items);
|
||||
if (ModelUtils.isSet(p)) {
|
||||
return "Set.empty[" + inner + "]";
|
||||
|
||||
+2
-3
@@ -413,9 +413,8 @@ public class ScalaSttp4ClientCodegen extends AbstractScalaCodegen implements Cod
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "Map[String, " + inner + "].empty ";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
if (ModelUtils.isSet(ap)) {
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (ModelUtils.isSet(p)) {
|
||||
return "Set[" + inner + "].empty ";
|
||||
}
|
||||
return "Seq[" + inner + "].empty ";
|
||||
|
||||
+2
-3
@@ -431,9 +431,8 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code
|
||||
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
return "Map[String, " + inner + "].empty ";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
if (ModelUtils.isSet(ap)) {
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
if (ModelUtils.isSet(p)) {
|
||||
return "Set[" + inner + "].empty ";
|
||||
}
|
||||
return "Seq[" + inner + "].empty ";
|
||||
|
||||
+2
-3
@@ -193,9 +193,8 @@ public class ScalazClientCodegen extends AbstractScalaCodegen implements Codegen
|
||||
|
||||
return "Map.empty[String, " + inner + "] ";
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String collectionType = ModelUtils.isSet(ap) ? typeMapping.get("set") : typeMapping.get("array");
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
String collectionType = ModelUtils.isSet(p) ? typeMapping.get("set") : typeMapping.get("array");
|
||||
|
||||
// We assume that users would map these collections to a monoid with an identity function
|
||||
// There's no reason to assume mutable structure here (which may make consumption more difficult)
|
||||
|
||||
+1
-2
@@ -133,8 +133,7 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+1
-2
@@ -116,8 +116,7 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
|
||||
+3
-6
@@ -394,8 +394,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
if (additionalProperties != null) {
|
||||
Schema inner = null;
|
||||
if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema ap = (ArraySchema) schema;
|
||||
inner = ap.getItems();
|
||||
inner = ModelUtils.getSchemaItems(schema);
|
||||
} else if (ModelUtils.isMapSchema(schema)) {
|
||||
inner = ModelUtils.getAdditionalProperties(schema);
|
||||
}
|
||||
@@ -676,8 +675,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return ModelUtils.isSet(p) ? "Set<" + getTypeDeclaration(inner) + ">" : "[" + getTypeDeclaration(inner) + "]";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
Schema inner = ModelUtils.getAdditionalProperties(p);
|
||||
@@ -794,8 +792,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
if (ModelUtils.isMapSchema(p)) {
|
||||
return getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
return ModelUtils.isSet(p) ? "Set<" + inner + ">" : "[" + inner + "]";
|
||||
}
|
||||
return null;
|
||||
|
||||
+2
-3
@@ -289,7 +289,7 @@ public class SwiftCombineClientCodegen extends DefaultCodegen implements Codegen
|
||||
Schema<?> schema = ModelUtils.unaliasSchema(this.openAPI, p, importMapping);
|
||||
Schema<?> target = ModelUtils.isGenerateAliasAsModel() ? p : schema;
|
||||
if (ModelUtils.isArraySchema(target)) {
|
||||
Schema<?> items = getSchemaItems((ArraySchema) schema);
|
||||
Schema<?> items = ModelUtils.getSchemaItems(schema);
|
||||
return ModelUtils.isSet(target) && ModelUtils.isObjectSchema(items) ? "Set<" + getTypeDeclaration(items) + ">" : "[" + getTypeDeclaration(items) + "]";
|
||||
} else if (ModelUtils.isMapSchema(target)) {
|
||||
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
|
||||
@@ -422,8 +422,7 @@ public class SwiftCombineClientCodegen extends DefaultCodegen implements Codegen
|
||||
if (ModelUtils.isMapSchema(p)) {
|
||||
return getSchemaType(ModelUtils.getAdditionalProperties(p));
|
||||
} else if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
String inner = getSchemaType(ap.getItems());
|
||||
String inner = getSchemaType(ModelUtils.getSchemaItems(p));
|
||||
return ModelUtils.isSet(p) ? "Set<" + inner + ">" : "[" + inner + "]";
|
||||
}
|
||||
return null;
|
||||
|
||||
+3
-5
@@ -482,7 +482,7 @@ public class TypeScriptClientCodegen extends AbstractTypeScriptClientCodegen imp
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
Schema inner;
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
inner = ((ArraySchema) p).getItems();
|
||||
inner = ModelUtils.getSchemaItems(p);
|
||||
return this.getSchemaType(p) + "<" + this.getTypeDeclaration(unaliasSchema(inner)) + ">";
|
||||
} else if (ModelUtils.isMapSchema(p)) {
|
||||
inner = getSchemaAdditionalProperties(p);
|
||||
@@ -787,8 +787,7 @@ public class TypeScriptClientCodegen extends AbstractTypeScriptClientCodegen imp
|
||||
}
|
||||
return fullPrefix + example + closeChars;
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arrayschema = (ArraySchema) schema;
|
||||
Schema itemSchema = arrayschema.getItems();
|
||||
Schema itemSchema = ModelUtils.getSchemaItems(schema);
|
||||
String itemModelName = getModelName(itemSchema);
|
||||
if (objExample instanceof Iterable && itemModelName == null) {
|
||||
// If the example is already a list, return it directly instead of wrongly wrap it in another list
|
||||
@@ -919,8 +918,7 @@ public class TypeScriptClientCodegen extends AbstractTypeScriptClientCodegen imp
|
||||
} else if (simpleStringSchema(schema)) {
|
||||
return propName + "_example";
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
ArraySchema arraySchema = (ArraySchema) schema;
|
||||
Schema itemSchema = arraySchema.getItems();
|
||||
Schema itemSchema = ModelUtils.getSchemaItems(schema);
|
||||
example = getObjectExample(itemSchema);
|
||||
if (example != null) {
|
||||
return example;
|
||||
|
||||
+1
-1
@@ -337,7 +337,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
|
||||
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
|
||||
codegenModel.additionalPropertiesType = getSchemaType(additionalProperties);
|
||||
if ("array".equalsIgnoreCase(codegenModel.additionalPropertiesType)) {
|
||||
codegenModel.additionalPropertiesType += '<' + getSchemaType(((ArraySchema) additionalProperties).getItems()) + '>';
|
||||
codegenModel.additionalPropertiesType += '<' + getSchemaType((ModelUtils.getSchemaItems(additionalProperties))) + '>';
|
||||
}
|
||||
addImport(codegenModel, codegenModel.additionalPropertiesType);
|
||||
}
|
||||
|
||||
+1
-2
@@ -235,8 +235,7 @@ public class XojoClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
@Override
|
||||
public String getTypeDeclaration(Schema p) {
|
||||
if (ModelUtils.isArraySchema(p)) {
|
||||
ArraySchema ap = (ArraySchema) p;
|
||||
Schema inner = ap.getItems();
|
||||
Schema inner = ModelUtils.getSchemaItems(p);
|
||||
return super.getTypeDeclaration(inner);
|
||||
}
|
||||
return super.getTypeDeclaration(p);
|
||||
|
||||
+42
-4
@@ -20,6 +20,7 @@ package org.openapitools.codegen.utils;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.swagger.v3.core.util.AnnotationsUtils;
|
||||
import io.swagger.v3.core.util.Json;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import io.swagger.v3.oas.models.Operation;
|
||||
import io.swagger.v3.oas.models.PathItem;
|
||||
@@ -356,8 +357,8 @@ public class ModelUtils {
|
||||
visitSchema(openAPI, s, mimeType, visitedSchemas, visitor);
|
||||
}
|
||||
}
|
||||
} else if (schema instanceof ArraySchema) {
|
||||
Schema itemsSchema = ((ArraySchema) schema).getItems();
|
||||
} else if (ModelUtils.isArraySchema(schema)) {
|
||||
Schema itemsSchema = ModelUtils.getSchemaItems(schema);
|
||||
if (itemsSchema != null) {
|
||||
visitSchema(openAPI, itemsSchema, mimeType, visitedSchemas, visitor);
|
||||
}
|
||||
@@ -594,7 +595,44 @@ public class ModelUtils {
|
||||
* @return true if the specified schema is an Array schema.
|
||||
*/
|
||||
public static boolean isArraySchema(Schema schema) {
|
||||
return (schema instanceof ArraySchema);
|
||||
if (schema == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (schema instanceof JsonSchema) { // 3.1 spec
|
||||
if (schema.getTypes() != null && schema.getTypes().contains("array")) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else { // 3.0 spec
|
||||
return (schema instanceof ArraySchema) || "array".equals(schema.getType());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the schema in the array's item. Null if schema is not an array.
|
||||
*
|
||||
* @param schema the OAS schema
|
||||
* @return item schema.
|
||||
*/
|
||||
public static Schema<?> getSchemaItems(Schema schema) {
|
||||
if (!isArraySchema(schema)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Schema<?> items = schema.getItems();
|
||||
if (items == null) {
|
||||
if (schema instanceof JsonSchema) { // 3.1 spec
|
||||
// do nothing as the schema may contain prefixItems only
|
||||
} else { // 3.0 spec, default to string
|
||||
LOGGER.error("Undefined array inner type for `{}`. Default to String.", schema.getName());
|
||||
items = new StringSchema().description("TODO default missing array inner type to string");
|
||||
schema.setItems(items);
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
public static boolean isSet(Schema schema) {
|
||||
@@ -1272,7 +1310,7 @@ public class ModelUtils {
|
||||
}
|
||||
}
|
||||
} else if (isArraySchema(schema)) {
|
||||
Schema itemsSchema = ((ArraySchema) schema).getItems();
|
||||
Schema itemsSchema = ModelUtils.getSchemaItems(schema);
|
||||
if (itemsSchema != null) {
|
||||
return hasSelfReference(openAPI, itemsSchema, visitedSchemaNames);
|
||||
}
|
||||
|
||||
+2
-2
@@ -990,7 +990,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
|
||||
File file = (File) param.getValue();
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey())
|
||||
.fileName(file.getName()).size(file.length()).build();
|
||||
|
||||
|
||||
// Attempt to probe the content type for the file so that the form part is more correctly
|
||||
// and precisely identified, but fall back to application/octet-stream if that fails.
|
||||
MediaType type;
|
||||
@@ -999,7 +999,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
|
||||
} catch (IOException | IllegalArgumentException e) {
|
||||
type = MediaType.APPLICATION_OCTET_STREAM_TYPE;
|
||||
}
|
||||
|
||||
|
||||
multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, type));
|
||||
} else {
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).build();
|
||||
|
||||
+15
@@ -80,13 +80,22 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
|
||||
{{/vendorExtensions.x-field-extra-annotation}}
|
||||
{{#vendorExtensions.x-is-jackson-optional-nullable}}
|
||||
{{#isContainer}}
|
||||
{{#deprecated}}
|
||||
@Deprecated
|
||||
{{/deprecated}}
|
||||
private JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>undefined();
|
||||
{{/isContainer}}
|
||||
{{^isContainer}}
|
||||
{{#deprecated}}
|
||||
@Deprecated
|
||||
{{/deprecated}}
|
||||
private JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
|
||||
{{/isContainer}}
|
||||
{{/vendorExtensions.x-is-jackson-optional-nullable}}
|
||||
{{^vendorExtensions.x-is-jackson-optional-nullable}}
|
||||
{{#deprecated}}
|
||||
@Deprecated
|
||||
{{/deprecated}}
|
||||
private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
|
||||
{{/vendorExtensions.x-is-jackson-optional-nullable}}
|
||||
|
||||
@@ -116,6 +125,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
|
||||
));
|
||||
|
||||
{{/vendorExtensions.x-enum-as-string}}
|
||||
{{#deprecated}}
|
||||
@Deprecated
|
||||
{{/deprecated}}
|
||||
public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
|
||||
{{#vendorExtensions.x-enum-as-string}}
|
||||
if (!{{{nameInSnakeCase}}}_VALUES.contains({{name}})) {
|
||||
@@ -256,6 +268,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
|
||||
{{/vendorExtensions.x-is-jackson-optional-nullable}}
|
||||
|
||||
{{^isReadOnly}}
|
||||
{{#deprecated}}
|
||||
@Deprecated
|
||||
{{/deprecated}}
|
||||
{{#vendorExtensions.x-setter-extra-annotation}} {{{vendorExtensions.x-setter-extra-annotation}}}
|
||||
{{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
|
||||
{{#vendorExtensions.x-enum-as-string}}
|
||||
|
||||
+4
-4
@@ -119,13 +119,13 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
|
||||
protected Integer serverIndex = 0;
|
||||
protected Map<String, String> serverVariables = null;
|
||||
{{^hasOperationServers}}
|
||||
protected Map<String, List<ServerConfiguration>> operationServers = new LinkedHashMap<>();
|
||||
protected Map<String, List<ServerConfiguration>> operationServers = new HashMap<>();
|
||||
{{/hasOperationServers}}
|
||||
{{#hasOperationServers}}
|
||||
protected Map<String, List<ServerConfiguration>> operationServers;
|
||||
|
||||
{
|
||||
Map<String, List<ServerConfiguration>> operationServers = new LinkedHashMap<>();
|
||||
Map<String, List<ServerConfiguration>> operationServers = new HashMap<>();
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
{{#operations}}
|
||||
@@ -992,14 +992,14 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
|
||||
.fileName(file.getName()).size(file.length()).build();
|
||||
|
||||
// Attempt to probe the content type for the file so that the form part is more correctly
|
||||
// and precisely identified, but fall back to application/octet-stream if that fails.
|
||||
// and precisely identified, but fall back to application/octet-stream if that fails.
|
||||
MediaType type;
|
||||
try {
|
||||
type = MediaType.valueOf(Files.probeContentType(file.toPath()));
|
||||
} catch (IOException | IllegalArgumentException e) {
|
||||
type = MediaType.APPLICATION_OCTET_STREAM_TYPE;
|
||||
}
|
||||
|
||||
|
||||
multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, type));
|
||||
} else {
|
||||
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).build();
|
||||
|
||||
+78
-24
@@ -60,7 +60,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
|
||||
{{#useOneOfDiscriminatorLookup}}
|
||||
{{#discriminator}}
|
||||
{{classname}} new{{classname}} = new {{classname}}();
|
||||
Map<String,Object> result2 = tree.traverse(jp.getCodec()).readValueAs(new TypeReference<Map<String, Object>>() {});
|
||||
Map<String, Object> result2 = tree.traverse(jp.getCodec()).readValueAs(new TypeReference<Map<String, Object>>() {});
|
||||
String discriminatorValue = (String)result2.get("{{{propertyBaseName}}}");
|
||||
switch (discriminatorValue) {
|
||||
{{#mappedModels}}
|
||||
@@ -78,37 +78,74 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
|
||||
boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS);
|
||||
int match = 0;
|
||||
JsonToken token = tree.traverse(jp.getCodec()).nextToken();
|
||||
{{#composedSchemas}}
|
||||
{{#oneOf}}
|
||||
// deserialize {{{.}}}
|
||||
// deserialize {{{dataType}}}{{#isNullable}} (nullable){{/isNullable}}
|
||||
try {
|
||||
{{^isArray}}
|
||||
boolean attemptParsing = true;
|
||||
// ensure that we respect type coercion as set on the client ObjectMapper
|
||||
if ({{{.}}}.class.equals(Integer.class) || {{{.}}}.class.equals(Long.class) || {{{.}}}.class.equals(Float.class) || {{{.}}}.class.equals(Double.class) || {{{.}}}.class.equals(Boolean.class) || {{{.}}}.class.equals(String.class)) {
|
||||
attemptParsing = typeCoercion;
|
||||
if (!attemptParsing) {
|
||||
attemptParsing |= (({{{.}}}.class.equals(Integer.class) || {{{.}}}.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
|
||||
attemptParsing |= (({{{.}}}.class.equals(Float.class) || {{{.}}}.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
|
||||
attemptParsing |= ({{{.}}}.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
|
||||
attemptParsing |= ({{{.}}}.class.equals(String.class) && token == JsonToken.VALUE_STRING);
|
||||
{{#isNullable}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NULL);
|
||||
{{/isNullable}}
|
||||
}
|
||||
{{#isPrimitiveType}}
|
||||
attemptParsing = typeCoercion; //respect type coercion setting
|
||||
if (!attemptParsing) {
|
||||
{{#isString}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_STRING);
|
||||
{{/isString}}
|
||||
{{#isInteger}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_INT);
|
||||
{{/isInteger}}
|
||||
{{#isLong}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_INT);
|
||||
{{/isLong}}
|
||||
{{#isShort}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_INT);
|
||||
{{/isShort}}
|
||||
{{#isFloat}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_FLOAT);
|
||||
{{/isFloat}}
|
||||
{{#isDouble}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_FLOAT);
|
||||
{{/isDouble}}
|
||||
{{#isNumber}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_FLOAT);
|
||||
{{/isNumber}}
|
||||
{{#isDecimal}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NUMBER_FLOAT);
|
||||
{{/isDecimal}}
|
||||
{{#isBoolean}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
|
||||
{{/isBoolean}}
|
||||
{{#isNullable}}
|
||||
attemptParsing |= (token == JsonToken.VALUE_NULL);
|
||||
{{/isNullable}}
|
||||
}
|
||||
{{/isPrimitiveType}}
|
||||
if (attemptParsing) {
|
||||
deserialized = tree.traverse(jp.getCodec()).readValueAs({{{.}}}.class);
|
||||
deserialized = tree.traverse(jp.getCodec()).readValueAs({{{dataType}}}.class);
|
||||
// TODO: there is no validation against JSON schema constraints
|
||||
// (min, max, enum, pattern...), this does not perform a strict JSON
|
||||
// validation, which means the 'match' count may be higher than it should be.
|
||||
match++;
|
||||
log.log(Level.FINER, "Input data matches schema '{{{.}}}'");
|
||||
log.log(Level.FINER, "Input data matches schema '{{{dataType}}}'");
|
||||
}
|
||||
{{/isArray}}
|
||||
{{#isArray}}
|
||||
if (token == JsonToken.START_ARRAY) {
|
||||
final TypeReference<{{{dataType}}}> ref = new TypeReference<{{{dataType}}}>(){};
|
||||
deserialized = tree.traverse(jp.getCodec()).readValueAs(ref);
|
||||
// TODO: there is no validation against JSON schema constraints
|
||||
// (min, max, enum, pattern...), this does not perform a strict JSON
|
||||
// validation, which means the 'match' count may be higher than it should be.
|
||||
match++;
|
||||
log.log(Level.FINER, "Input data matches schema '{{{dataType}}}'");
|
||||
}
|
||||
{{/isArray}}
|
||||
} catch (Exception e) {
|
||||
// deserialization failed, continue
|
||||
log.log(Level.FINER, "Input data does not match schema '{{{.}}}'", e);
|
||||
log.log(Level.FINER, "Input data does not match schema '{{{dataType}}}'", e);
|
||||
}
|
||||
|
||||
{{/oneOf}}
|
||||
{{/composedSchemas}}
|
||||
if (match == 1) {
|
||||
{{classname}} ret = new {{classname}}();
|
||||
ret.setActualInstance(deserialized);
|
||||
@@ -152,13 +189,17 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
|
||||
return Objects.hash(getActualInstance(), isNullable(), getSchemaType(), additionalProperties);
|
||||
}
|
||||
{{/additionalPropertiesType}}
|
||||
{{#composedSchemas}}
|
||||
{{#oneOf}}
|
||||
public {{classname}}({{{.}}} o) {
|
||||
{{^vendorExtensions.x-duplicated-data-type}}
|
||||
public {{classname}}({{{baseType}}} o) {
|
||||
super("oneOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}});
|
||||
setActualInstance(o);
|
||||
}
|
||||
{{/vendorExtensions.x-duplicated-data-type}}
|
||||
|
||||
{{/oneOf}}
|
||||
{{/composedSchemas}}
|
||||
static {
|
||||
{{#oneOf}}
|
||||
schemas.put("{{{.}}}", new GenericType<{{{.}}}>() {
|
||||
@@ -198,13 +239,17 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
|
||||
}
|
||||
|
||||
{{/isNullable}}
|
||||
{{#composedSchemas}}
|
||||
{{#oneOf}}
|
||||
if (JSON.isInstanceOf({{{.}}}.class, instance, new HashSet<>())) {
|
||||
{{^vendorExtensions.x-duplicated-data-type}}
|
||||
if (JSON.isInstanceOf({{{baseType}}}.class, instance, new HashSet<>())) {
|
||||
super.setActualInstance(instance);
|
||||
return;
|
||||
}
|
||||
|
||||
{{/vendorExtensions.x-duplicated-data-type}}
|
||||
{{/oneOf}}
|
||||
{{/composedSchemas}}
|
||||
throw new RuntimeException("Invalid instance type. Must be {{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}");
|
||||
}
|
||||
|
||||
@@ -219,17 +264,26 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
|
||||
return super.getActualInstance();
|
||||
}
|
||||
|
||||
{{#composedSchemas}}
|
||||
{{#oneOf}}
|
||||
/**
|
||||
* Get the actual instance of `{{{.}}}`. If the actual instance is not `{{{.}}}`,
|
||||
* Get the actual instance of `{{{dataType}}}`. If the actual instance is not `{{{dataType}}}`,
|
||||
* the ClassCastException will be thrown.
|
||||
*
|
||||
* @return The actual instance of `{{{.}}}`
|
||||
* @throws ClassCastException if the instance is not `{{{.}}}`
|
||||
* @return The actual instance of `{{{dataType}}}`
|
||||
* @throws ClassCastException if the instance is not `{{{dataType}}}`
|
||||
*/
|
||||
public {{{.}}} get{{{.}}}() throws ClassCastException {
|
||||
return ({{{.}}})super.getActualInstance();
|
||||
{{^isArray}}
|
||||
public {{{dataType}}} get{{{dataType}}}() throws ClassCastException {
|
||||
return ({{{dataType}}})super.getActualInstance();
|
||||
}
|
||||
{{/isArray}}
|
||||
{{#isArray}}
|
||||
public {{{dataType}}} get{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}() throws ClassCastException {
|
||||
return ({{{dataType}}})super.getActualInstance();
|
||||
}
|
||||
{{/isArray}}
|
||||
|
||||
{{/oneOf}}
|
||||
{{/composedSchemas}}
|
||||
}
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
|
||||
) {
|
||||
this();
|
||||
{{#readOnlyVars}}
|
||||
this.{{name}} = {{name}};
|
||||
this.{{name}} = {{#vendorExtensions.x-is-jackson-optional-nullable}}{{name}} == null ? JsonNullable.<{{{datatypeWithEnum}}}>undefined() : JsonNullable.of({{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{name}}{{/vendorExtensions.x-is-jackson-optional-nullable}};
|
||||
{{/readOnlyVars}}
|
||||
}{{/jackson}}{{/withXml}}{{/vendorExtensions.x-has-readonly-properties}}
|
||||
{{#vars}}
|
||||
|
||||
+1
-2
@@ -1,2 +1 @@
|
||||
{{#required}}{{^isReadOnly}} @NotNull
|
||||
{{/isReadOnly}}{{/required}}{{>beanValidationCore}}
|
||||
{{#required}}{{^isReadOnly}}@NotNull {{/isReadOnly}}{{/required}}{{#isContainer}}{{^isPrimitiveType}}{{^isEnum}}@Valid {{/isEnum}}{{/isPrimitiveType}}{{/isContainer}}{{^isContainer}}{{^isPrimitiveType}}@Valid {{/isPrimitiveType}}{{/isContainer}}{{>beanValidationCore}}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user