[java] "additionalProperties: true" for free form object in directory/map is not working
Created by: yuanpli
Description
I am using openapi-generator-maven-plugin to generate the model pojo beans, but the hashmap object is not generated correct if "additionalProperties: true" introduced in declaration file.
openapi-generator version
<version>3.2.0</version>
OpenAPI declaration file content or url
swagger: '2.0'
info:
description: >-
This spec is mainly for testing Petstore server and contains fake endpoints,
models. Please do not use this for any other purpose. Special characters: "
\
version: 1.0.0
title: Swagger Petstore
termsOfService: 'http://swagger.io/terms/'
contact:
email: apiteam@swagger.io
license:
name: Apache-2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
host: 'petstore.swagger.io:80'
basePath: /v2
paths:
/test:
get:
description: Gets all operation occurrence resources.
responses:
'200':
description: Successful response
schema:
type: string
default:
description: Error payload
schema:
type: string
tags:
- test
schemes:
- http
definitions:
MapTest1:
description: This type is represented in JSON as an extensible JSON object
type: object
additionalProperties: {}
MapTest2:
description: This type is represented in JSON as an extensible JSON object
type: object
additionalProperties: true
example:
optional_key: optional value
MapTest3:
type: object
additionalProperties:
type: object
externalDocs:
description: Find out more about Swagger
url: 'http://swagger.io'
Command line used for generation
mvn clean compile
Steps to reproduce
The maven pom.xml is
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.vnfm.model</groupId>
<artifactId>swagger-vnfm</artifactId>
<packaging>jar</packaging>
<version>DYNAMIC-SNAPSHOT</version>
<name>swagger-vnfm</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger-core-version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson-version}</version>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<swagger-core-version>1.5.21</swagger-core-version>
<gson-version>2.8.1</gson-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<!--<groupId>io.swagger</groupId>-->
<!--<artifactId>swagger-codegen-maven-plugin</artifactId>-->
<!--<version>2.3.1</version>-->
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>lcm-generate</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/swagger.yaml</inputSpec>
<language>java</language>
<generateApis>false</generateApis>
<generateModelTests>false</generateModelTests>
<generateModelDocumentation>false</generateModelDocumentation>
<generateSupportingFiles>false</generateSupportingFiles>
<skipOverwrite>true</skipOverwrite>
<configOptions>
<dateLibrary>java8</dateLibrary>
</configOptions>
<output>${project.build.directory}/generated-sources</output>
<modelPackage>com.vnfm.datamodel.cbam.v4</modelPackage>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Suggest a fix/enhancement
Free-form objects can be defined in two ways as described in https://swagger.io/docs/specification/data-models/dictionaries/ . And "additionalProperties: {}" is working, so "additionalProperties: true" should be also supported.