@@ -375,6 +375,10 @@ protected <T> T treeToValue(JsonNode jn, Class<T> clazz) throws JsonProcessingEx
375375 T value = jsonMapper .treeToValue (jn , clazz );
376376 if (value != null ) {
377377 resolveExtensions (jn ).ifPresent (extensions -> BeanMap .of (value ).put ("extensions" , extensions ));
378+ // fix for default value
379+ if (jn .has ("defaultValue" )) {
380+ BeanMap .of (value ).put ("default" , jsonMapper .treeToValue (jn .get ("defaultValue" ), Map .class ));
381+ }
378382 }
379383 return value ;
380384 }
@@ -949,6 +953,9 @@ private void addProperty(Schema parentSchema, String name, Schema propertySchema
949953 private String resolvePropertyName (Element element , Element classElement , Schema propertySchema ) {
950954 String name = Optional .ofNullable (propertySchema .getName ()).orElse (element .getName ());
951955
956+ if (element .hasAnnotation (io .swagger .v3 .oas .annotations .media .Schema .class )) {
957+ return element .stringValue (io .swagger .v3 .oas .annotations .media .Schema .class , "name" ).orElse (name );
958+ }
952959 if (element .hasAnnotation (JsonProperty .class )) {
953960 return element .stringValue (JsonProperty .class , "value" ).orElse (name );
954961 }
@@ -992,6 +999,96 @@ protected Schema bindSchemaForElement(VisitorContext context, Element element, C
992999 if (schemaDescription .isPresent ()) {
9931000 schemaToBind .setDescription (schemaDescription .get ());
9941001 }
1002+ Optional <String > schemaFormat = schemaAnn .get ("format" , String .class );
1003+ if (schemaFormat .isPresent ()) {
1004+ schemaToBind .setFormat (schemaFormat .get ());
1005+ }
1006+ Optional <String > schemaTitle = schemaAnn .get ("title" , String .class );
1007+ if (schemaTitle .isPresent ()) {
1008+ schemaToBind .setTitle (schemaTitle .get ());
1009+ }
1010+ Optional <BigDecimal > schemaMinimum = schemaAnn .get ("minimum" , BigDecimal .class );
1011+ if (schemaMinimum .isPresent ()) {
1012+ schemaToBind .setMinimum (schemaMinimum .get ());
1013+ }
1014+ Optional <BigDecimal > schemaMaximum = schemaAnn .get ("maximum" , BigDecimal .class );
1015+ if (schemaMaximum .isPresent ()) {
1016+ schemaToBind .setMaximum (schemaMaximum .get ());
1017+ }
1018+ Optional <Boolean > schemaExclusiveMinimum = schemaAnn .get ("exclusiveMinimum" , Boolean .class );
1019+ if (schemaExclusiveMinimum .isPresent ()) {
1020+ schemaToBind .setExclusiveMinimum (schemaExclusiveMinimum .get ());
1021+ }
1022+ Optional <Boolean > schemaExclusiveMaximum = schemaAnn .get ("exclusiveMaximum" , Boolean .class );
1023+ if (schemaExclusiveMaximum .isPresent ()) {
1024+ schemaToBind .setExclusiveMaximum (schemaExclusiveMaximum .get ());
1025+ }
1026+ Optional <Integer > schemaMinLength = schemaAnn .get ("minLength" , Integer .class );
1027+ if (schemaMinLength .isPresent ()) {
1028+ schemaToBind .setMinLength (schemaMinLength .get ());
1029+ }
1030+ Optional <Integer > schemaMaxLength = schemaAnn .get ("maxLength" , Integer .class );
1031+ if (schemaMaxLength .isPresent ()) {
1032+ schemaToBind .setMaxLength (schemaMaxLength .get ());
1033+ }
1034+ Optional <Integer > schemaMinProperties = schemaAnn .get ("minProperties" , Integer .class );
1035+ if (schemaMinProperties .isPresent ()) {
1036+ schemaToBind .setMinProperties (schemaMinProperties .get ());
1037+ }
1038+ Optional <Integer > schemaMaxProperties = schemaAnn .get ("maxProperties" , Integer .class );
1039+ if (schemaMaxProperties .isPresent ()) {
1040+ schemaToBind .setMaxProperties (schemaMaxProperties .get ());
1041+ }
1042+ Optional <BigDecimal > schemaMultipleOf = schemaAnn .get ("multipleOf" , BigDecimal .class );
1043+ if (schemaMultipleOf .isPresent ()) {
1044+ schemaToBind .setMultipleOf (schemaMultipleOf .get ());
1045+ }
1046+ Optional <String > schemaPattern = schemaAnn .get ("pattern" , String .class );
1047+ if (schemaPattern .isPresent ()) {
1048+ schemaToBind .setPattern (schemaPattern .get ());
1049+ }
1050+
1051+ Optional <AnnotationValue <io .swagger .v3 .oas .annotations .ExternalDocumentation >> schemaExtDocs = schemaAnn .getAnnotation ("externalDocs" , io .swagger .v3 .oas .annotations .ExternalDocumentation .class );
1052+ ExternalDocumentation externalDocs = null ;
1053+ if (schemaExtDocs .isPresent ()) {
1054+ externalDocs = toValue (schemaExtDocs .get ().getValues (), context , ExternalDocumentation .class ).orElse (null );
1055+ }
1056+ if (externalDocs != null ) {
1057+ schemaToBind .setExternalDocs (externalDocs );
1058+ }
1059+ Optional <String > schemaDefaultValue = schemaAnn .get ("defaultValue" , String .class );
1060+ if (schemaDefaultValue .isPresent ()) {
1061+ try {
1062+ schemaToBind .setDefault (jsonMapper .readValue (schemaDefaultValue .get (), Map .class ));
1063+ } catch (JsonProcessingException e ) {
1064+ schemaToBind .setDefault (schemaDefaultValue .get ());
1065+ }
1066+ }
1067+ Optional <String > schemaExample = schemaAnn .get ("example" , String .class );
1068+ if (schemaExample .isPresent ()) {
1069+ try {
1070+ schemaToBind .setExample (jsonMapper .readValue (schemaExample .get (), Map .class ));
1071+ } catch (JsonProcessingException e ) {
1072+ schemaToBind .setExample (schemaExample .get ());
1073+ }
1074+ }
1075+ Optional <Boolean > schemaDeprecated = schemaAnn .get ("deprecated" , Boolean .class );
1076+ if (schemaDeprecated .isPresent ()) {
1077+ schemaToBind .setDeprecated (schemaDeprecated .get ());
1078+ }
1079+ Optional <io .swagger .v3 .oas .annotations .media .Schema .AccessMode > schemaAccessMode = schemaAnn .get ("accessMode" , io .swagger .v3 .oas .annotations .media .Schema .AccessMode .class );
1080+ if (schemaAccessMode .isPresent ()) {
1081+ if (schemaAccessMode .get () == io .swagger .v3 .oas .annotations .media .Schema .AccessMode .READ_ONLY ) {
1082+ schemaToBind .setReadOnly (true );
1083+ schemaToBind .setWriteOnly (null );
1084+ } else if (schemaAccessMode .get () == io .swagger .v3 .oas .annotations .media .Schema .AccessMode .WRITE_ONLY ) {
1085+ schemaToBind .setReadOnly (false );
1086+ schemaToBind .setWriteOnly (null );
1087+ } else if (schemaAccessMode .get () == io .swagger .v3 .oas .annotations .media .Schema .AccessMode .READ_WRITE ) {
1088+ schemaToBind .setReadOnly (null );
1089+ schemaToBind .setWriteOnly (null );
1090+ }
1091+ }
9951092 }
9961093 }
9971094 if (originalSchema .get$ref () == null && schemaAnn != null ) {
0 commit comments