Changelog
2.1.2
- fixed bug: duplicate "string" type added by type discriminator handling
- fixed bug: incorrect comparison check in "mergePropertyAttributesIntoType" step caused infinite loop
2.1.1
2.1.0
- add initial step extension functions to all InitialTypeData instead of specific subclasses
2.0.0
- re-structured reflection and kotlinx-serialization type analysis
- allow more powerful custom type analyzers
- open up more internals for custom processors while still being able to re-use common functions
- re-structures swagger and json schema generation
- allow more powerful custom schema generators
- reworked/replaced bundles & overhauled input data classes for steps to make flow of data and order of steps more clear
- generic bundles replaced with specific classes "InitialTypeData", "TypeDataGroup", "IntermediateXYSchemaData", "CompiledXYSchemaData"
- start of pipeline changed from extension functions on raw kotlin types (e.g. typeOf
, T::class, etc.) to initial , initial(T::clas), etc.
- overhauled type redirection
- enhance configuration dsl
- more options to define exact behavior
- matching
- MATCH: whether the nullability of the "from" has to match exactly
- IGNORE: nullability of the "from" type is ignored when matching redirects
- replacing
- KEEP: whether the nullability of the "from" type should be kept with the replaced type
- REPLACE: whether the nullability is also overwritten
- matching
- reworked base data models to better fit requirements and make them more flexible
- added option to enable/disable explicit "null"-types for properties (e.g.
.compileInlining(explicitNullTypes = true)
- added option to allow special float values (i.e. "NaN", "Infinity", "-Infinity") for Float and Double (e.g.
.generateSwaggerSchema { allowSpecialFloatingPointValues = true }
) - added option to generate schemas for maps with complex keys as array with the map key and map values as valid item types (e.g.
.generateSwaggerSchema { mapsWithStructuredKeysAsArrays = true }
) - added option to swagger schema generation to restrict values of discriminator properties to the name of the type (
strictDiscriminatorProperty
)) - option to handle nullable properties as required or non-required (e.g.
.generateSwaggerSchema { nullables = RequiredHandling.REQUIRED }
) - added support for kotlinx-serialization
@Contextual
annotation and@Serializable(with = ...)
- improved support for annotations on fields that modify the type/schema (e.g.
@Format
on properties) - renamed steps to better reflect their function and purpose:
connectSubTypes
toaddMissingSupertypeSubtypeRelations
mergeGetters
togettersToProperties
renameProperties
torenameMembers
processReflection
toanalyzeTypeUsingReflection
processSerialization
toanalyzeTypeUsingKotlinxSerialization
- removed deprecated "withAutoTitle" step
- shortened & simplified package structure
- make classes "internal" to reduce namespace pollution
- simplified and removed unnecessary dependencies, opened up transitive dependencies to library consumers
- fixed bug: type parameter nullability information was lost
- fixed bug:
@Type
-annotation not handled correctly - fixed renaming swagger schema properties #44
1.6.4
- fixed bug: when using reflection to analyze generic types, too many interfaces might be detected as subtypes #43
- fixed bug: when generating schema for a type overwriting a property with a more specific type, the wrong type was used in the resulting schema #43
1.6.3
- fixed: unchanged properties of swagger
@Schema
and@ArraySchema
annotations were not ignored during schema generation
1.5.1
- fixed: unchanged properties of swagger
@Schema
and@ArraySchema
annotations were not ignored during schema generation
1.6.2
- fixed/add support for top-level generics with kotlinx
1.6.1
- upgrade schema
io.swagger.parser.v3:swagger-parser
from 2.1.20 to 2.1.24
1.6.0
- added core annotations to specify schema 'type' and 'format':
@Schema
,@Type
. Can be added on classes and fields - exposes swagger library via gradle "api"
- swagger compilation step treats both openapi30
type
and openapi31types
as valid types - fixed bug: NPE during swagger compile inline step when using classes that have a nullable sealed class property
1.5.0
- added support for discriminator mapping in swagger schemas
- added support for example property on swagger
@Schema
-annotation #32 - added new core annotation
@Format
#36 - upgrade kotlin to 2.0.21
- fixed: naming conflict in core
@Default
annotation #35
1.4.3
- fixed: swagger enum types were missing type "string"
1.4.2
- fixed bug: swagger schema now internally uses
types
(for openapi 3.1) instead oftype
(for openapi 3.0) for everything #28 - fixed bug: ignore default/unchanged values in swagger "Schema"-annotation #31
- fixed bug: properly merge annotations on properties with annotations on types #27
- fixed bug: null-pointer exception #26
- fixed bug: (json-schema) properties with same types share modifications even though they should be applied to specific properties
1.4.1
- fix bug: wrong formatting with swagger TitleType/PathType "OPENAPI_FULL" and "OPENAPI_SIMPLE"
1.4.0
- added step
renameProperties
to rename properties (including support for kotlinx-serialization JsonNamingStrategy) - support for discriminators
addDiscriminatorProperty
-step to add discriminator property with specified name to all types with subtypesaddJacksonTypeInfoDiscriminatorProperty
-step to add discriminator property with name specified by jackson JsonTypeInfo-annotation to all types with subtypesaddJsonClassDiscriminatorProperty
-step to add discriminator property with name specified by kotlinx-serialization JsonClassDiscriminator-annotation to all types with subtypes- discriminator property is included in swagger schema-generation
- add project schema-kenerator-validations with support for javax and jackarta validation annotation in swagger-schemas
- supported jakarta annotations:
- NotNull
- NotEmpty
- NotBlank
- Size
- Min
- Max
-
supported javax annotations:
- NotNull
- NotEmpty
- NotBlank
- Size
- Min
- Max
-
annotations on constructor parameters are added to annotations of matching property
- handle nullability of fields according to openapi 3.1.0, e.g. nullable string as
type: ["string", "null"]
- fixed bug: required-annotation is ignored when all fields of a class would be nullable/optional
- fixed bug: nullpointer-exception (see issue #22)
1.3.0
please ignore this version - i messed up during release here
1.2.3
- fix issues with nullability of fields
1.2.2
- fixed bug: wrong format for openapi TitleType and RefType
1.2.1
- fixed bug: wrong format for TitleType.OPENAPI_SIMPLE
1.2.0
- added
TitleType.OPENAPI_SIMPLE
,TitleType.OPENAPI_FULL
,RefType.OPENAPI_SIMPLE
,RefType.OPENAPI_FULL
as options for swagger that generate results confirming to the openapi-spec RefType.OPENAPI_FULL
replacesRefType.FULL
as the default for swagger schemas- renames step
withAutoTitle(...)
towithTitle(...)
- step
withTitle(...)
can take a builder function to provide a custom title - step
compileReferencing(...)
andcompileReferencingRoot(...)
can take a builder function to provide a custom path - fixed bug: redirecting to nullable types did not work correctly
1.1.1
- fixed bug: swagger example property not set correctly. Used examples instead of example.
- fixed bug: exception when using Schema-annotation with blank minimum and maximum
- fixed bug: Default-annotation not handled for properties (swagger and json-schema)
1.1.0
-
added steps
customizeTypes
andcustomizeProperties
for easier manual customization of json-schema and swagger-schema -
added support for optional properties
- detect optional parameters (non nullable, but with a default value provided)
-
handle in schema generation step as required or non required (configurable)
-
added support for inline value classes
- detect value classes
-
inline "wrapped" type in schema generation
-
added config option
knownNotParameterized
for type processing with kotlinx-serialization to manually prevent single type appearing multiple times in some setups -
added support for annotations with kotlinx-serialization
-
fixed: type redirects not working with kotlinx-serialization
-
fixed: exception when qualified name is missing, e.g. for local classes
1.0.0
- 🥳
0.4.0
- reworked naming of steps to be more consistent and clearer
- detect whether a collection allows only unique elements (i.e. is a set) and include uniqueItems in json and swagger schema generation
- implemented type redirects to allow processing a custom type instead of the real one
- fix: exception when filtering members of some types
- fix: exception when processing type parameters of some types
0.3.0
- merge annotations from kotlin property and java field to fix annotations not being able to be detected
- add support for Jackson annotations
@JsonPropertyDescription
@JsonIgnore
@JsonIgnoreType
@JsonIgnoreProperties
@JsonProperty
- add support for swagger annotations
@Schema
@ArraySchema
- add new step to merge getters with their properties
0.2.0
- added SchemaName annotation to "rename" types (qualified and simple name)
- added options to choose whether to use the name or the toString-function for enum constants
- fix type parameters missing for maps and collections
- fix schema reference paths
- improved dsl of custom processors
0.1.1
- fixed bug with typeId parser
- fixed build config
0.1.0
- initial version