2023.2.1
#29 (fix), a property with a java keyword name generates invalid Java code
using a parameter/property name that was identical to a java keyword generated invalid Java code. For example, with a parameter and property name class
:
openapi: 3.0.3
info:
title: keyword identifier
version: 1.0.0
paths:
/keywords:
get:
parameters:
- name: class
description: parameter
in: query
schema:
$ref: '#/components/schemas/class'
responses:
'200':
description: the foo result
content:
application/json:
schema:
$ref: '#/components/schemas/class'
components:
schemas:
class:
type: object
properties:
class:
type: string
the processor did generate interfaces with an invalid class
parameter name and a model class with an invalid property name class
.
Now it adds a a
prefix if a parameter/property name is identical to any keyword:
package generated.api;
import annotation.Mapping;
import annotation.Parameter;
import generated.model.Class;
import generated.support.Generated;
@Generated(value = "openapi-processor-core", version = "test")
public interface Api {
@Mapping("/keywords")
Class getKeywords(@Parameter Class aClass);
}
package generated.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import generated.support.Generated;
@Generated(value = "openapi-processor-core", version = "test")
public class Class {
@JsonProperty("class")
private String aClass;
public String getClass() {
return aClass;
}
public void setClass(String aClass) {
this.aClass = aClass;
}
}
#25 (fix), invalid type of enum parameter
an enum parameter name was not properly converted to valid class name. With a name foo-foo
openapi: 3.0.0
info:
title: sample API
version: 1.0.0
paths:
/foo:
get:
parameters:
- name: foo-foo
description: test parameter
in: query
schema:
type: string
enum:
- foo-1
responses:
'204':
description: response
the processor generated a class Foo-foo
instead of FooFoo
:
public interface Api {
@GetMapping(path = "/foo")
void getFoo(@RequestParam(name = "foo-foo", required = false) Foo-foo fooFoo);
}
#24 (fix), doesn't find nested schemas of additionalProperties
using {package-name}
with a nested schema of additionalProperties
did not find the nested schema.
this prevented mappings like
map:
types:
- type: Values => java.util.Map<java.lang.String, {package-name}.model.Value>>
- type: MultiValues => java.util.Map<java.lang.String, java.util.List<{package-name}.model.Value>>>
assuming Values
is nested schema of additionalProperties
:
components:
schemas:
Values:
description: key is string, value is a Value object
type: object
additionalProperties:
$ref: '#/components/schemas/Value'