Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion multiapi-engine/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.sngular</groupId>
<artifactId>multiapi-engine</artifactId>
<version>6.3.1</version>
<version>6.3.2</version>
<packaging>jar</packaging>

<properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -539,13 +539,17 @@ private static List<SchemaFieldObject> processAdditionalProperties(
final var fieldObjectArrayList = new ArrayList<SchemaFieldObject>();

final var addPropObj = ApiTool.getAdditionalProperties(schema);
if (TypeConstants.isBoolean(addPropObj.asText())) {
fieldObjectArrayList
.add(SchemaFieldObject
.builder()
.baseName(fieldName)
.dataType(SchemaFieldObjectType.fromTypeList(TypeConstants.MAP, TypeConstants.OBJECT))
.build());
if (Objects.nonNull(addPropObj) && addPropObj.isBoolean()) {
if (addPropObj.asBoolean()) {
fieldObjectArrayList
.add(SchemaFieldObject
.builder()
.baseName(fieldName)
.dataType(SchemaFieldObjectType.fromTypeList(TypeConstants.MAP, TypeConstants.OBJECT))
.build());
} else {
return fieldObjectArrayList;
}
} else if (ApiTool.hasRef(addPropObj)) {
final String refSchemaName = MapperUtil.getPojoNameFromRef(addPropObj, specFile, null);
fieldObjectArrayList.add(processRef(fieldName, addPropObj,
Expand Down Expand Up @@ -633,12 +637,20 @@ private static void setFieldType(
field.setDataType(SchemaFieldObjectType.fromTypeList(TypeConstants.ARRAY, typeArray));
field.setImportClass(getImportClass(typeArray));
} else if (ApiTool.hasAdditionalProperties(schemaProperty)) {
final String typeObject = getMapTypeObject(schemaProperty, specFile);
field.setDataType(SchemaFieldObjectType.fromTypeList(TypeConstants.MAP, typeObject));
field.setImportClass(getImportClass(typeObject));

final JsonNode apNode = ApiTool.getAdditionalProperties(schemaProperty);
if (Objects.nonNull(apNode) && apNode.isBoolean()) {
if (apNode.asBoolean()) {
final String typeObject = TypeConstants.OBJECT;
field.setDataType(SchemaFieldObjectType.fromTypeList(TypeConstants.MAP, typeObject));
field.setImportClass(getImportClass(typeObject));
} // if boolean false -> do not set map type
} else {
final String typeObject = getMapTypeObject(schemaProperty, specFile);
field.setDataType(SchemaFieldObjectType.fromTypeList(TypeConstants.MAP, typeObject));
field.setImportClass(getImportClass(typeObject));
}
} else if (ApiTool.isObject(schemaProperty)) {
var typeObject = ApiTool.getType(schemaProperty);
String typeObject = ApiTool.getType(schemaProperty);
if (ApiTool.hasRef(schemaProperty)) {
typeObject = MapperUtil.getPojoNameFromRef(schema, specFile, null);
}
Expand All @@ -649,10 +661,10 @@ private static void setFieldType(

private static String getMapTypeObject(final JsonNode schema, final CommonSpecFile specFile) {
final String type;
if (ApiTool.isBoolean(ApiTool.getAdditionalProperties(schema))) {
final JsonNode additionalProperties = ApiTool.getAdditionalProperties(schema);
if (Objects.nonNull(additionalProperties) && additionalProperties.isBoolean()) {
type = TypeConstants.OBJECT;
} else {
final JsonNode additionalProperties = ApiTool.getAdditionalProperties(schema);
if (ApiTool.hasRef(additionalProperties)) {
type = MapperUtil.getPojoNameFromRef(additionalProperties, specFile, null);
} else if (ApiTool.isObject(schema)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,18 @@ public final class OpenApiGeneratorFixtures {
.build()
);

static final List<SpecFile> TEST_ADDITIONAL_PROPERTIES_FALSE = List.of(
SpecFile
.builder()
.filePath("openapigenerator/testAdditionalPropertiesFalse/api-test.yml")
.apiPackage("com.sngular.multifileplugin.testadditionalpropertiesFalse")
.modelPackage("com.sngular.multifileplugin.testadditionalpropertiesFalse.model")
.clientPackage("com.sngular.multifileplugin.testadditionalpropertiesFalse.client")
.modelNameSuffix("DTO")
.useLombokModelAnnotation(true)
.build()
);

static final List<SpecFile> TEST_ADDITIONAL_PROPERTIES_WITH_SCHEMA = List.of(
SpecFile
.builder()
Expand Down Expand Up @@ -1112,6 +1124,23 @@ static Function<Path, Boolean> validateAdditionalProperties() {
return path -> commonTest(path, expectedTestApiFile, expectedTestApiModelFiles, DEFAULT_TARGET_API, DEFAULT_MODEL_API, Collections.emptyList(), null);
}

static Function<Path, Boolean> validateAdditionalPropertiesFalse() {

final String DEFAULT_TARGET_API = "generated/com/sngular/multifileplugin/testadditionalpropertiesFalse";

final String DEFAULT_MODEL_API = "generated/com/sngular/multifileplugin/testadditionalpropertiesFalse/model";

final String COMMON_PATH = "openapigenerator/testAdditionalPropertiesFalse/";

final String ASSETS_PATH = COMMON_PATH + "assets/";

final List<String> expectedTestApiFile = List.of(ASSETS_PATH + "TestApi.java");

final List<String> expectedTestApiModelFiles = List.of(ASSETS_PATH + "TestDTO.java");

return path -> commonTest(path, expectedTestApiFile, expectedTestApiModelFiles, DEFAULT_TARGET_API, DEFAULT_MODEL_API, Collections.emptyList(), null);
}

static Function<Path, Boolean> validateAdditionalPropertiesWithSchema() {

final String DEFAULT_TARGET_API = "generated/com/sngular/multifileplugin/testadditionalpropertiesWithSchema";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ static Stream<Arguments> fileSpecToProcess() {
OpenApiGeneratorFixtures.validateOneOfInResponse()),
Arguments.of("testAdditionalProperties", OpenApiGeneratorFixtures.TEST_ADDITIONAL_PROPERTIES,
OpenApiGeneratorFixtures.validateAdditionalProperties()),
Arguments.of("testAdditionalPropertiesFalse", OpenApiGeneratorFixtures.TEST_ADDITIONAL_PROPERTIES_FALSE,
OpenApiGeneratorFixtures.validateAdditionalPropertiesFalse()),
Arguments.of("testAdditionalPropertiesWithSchema", OpenApiGeneratorFixtures.TEST_ADDITIONAL_PROPERTIES_WITH_SCHEMA,
OpenApiGeneratorFixtures.validateAdditionalPropertiesWithSchema()),
Arguments.of("testAdditionalPropertiesWithUnnamedObject", OpenApiGeneratorFixtures.TEST_ADDITIONAL_PROPERTIES_WITH_UNNAMED_OBJECT,
Expand Down
4 changes: 2 additions & 2 deletions scs-multiapi-gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ repositories {
}

group = 'com.sngular'
version = '6.3.0'
version = '6.3.2'

def SCSMultiApiPluginGroupId = group
def SCSMultiApiPluginVersion = version
Expand All @@ -31,7 +31,7 @@ dependencies {
shadow localGroovy()
shadow gradleApi()

implementation 'com.sngular:multiapi-engine:6.3.1'
implementation 'com.sngular:multiapi-engine:6.3.2'
testImplementation 'org.assertj:assertj-core:3.24.2'
testImplementation 'com.puppycrawl.tools:checkstyle:10.12.3'
testImplementation 'org.junit.platform:junit-platform-launcher:1.9.2'
Expand Down
4 changes: 2 additions & 2 deletions scs-multiapi-maven-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.sngular</groupId>
<artifactId>scs-multiapi-maven-plugin</artifactId>
<version>6.3.1</version>
<version>6.3.2</version>
<packaging>maven-plugin</packaging>

<name>AsyncApi - OpenApi Code Generator Maven Plugin</name>
Expand Down Expand Up @@ -271,7 +271,7 @@
<dependency>
<groupId>com.sngular</groupId>
<artifactId>multiapi-engine</artifactId>
<version>6.3.1</version>
<version>6.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
Expand Down
Loading