@@ -44,7 +44,9 @@ public Schema deserialize(JsonParser jp, DeserializationContext ctxt)
4444 schema = deserializeJsonSchema (node );
4545 return schema ;
4646 }
47-
47+ if (node .isBoolean ()) {
48+ return new Schema ().booleanSchemaValue (node .booleanValue ());
49+ }
4850
4951 List <String > composed = Arrays .asList ("allOf" , "anyOf" , "oneOf" );
5052 for (String field : composed ) {
@@ -98,23 +100,22 @@ private Schema deserializeObjectSchema(JsonNode node) {
98100 JsonNode additionalProperties = node .get ("additionalProperties" );
99101 Schema schema = null ;
100102 if (additionalProperties != null ) {
101- // try first to convert to Schema, if it fails it must be a boolean
102- try {
103- Schema innerSchema = Json .mapper ().convertValue (additionalProperties , Schema .class );
104- ((ObjectNode )node ).remove ("additionalProperties" );
105- MapSchema ms = Json .mapper ().convertValue (node , MapSchema .class );
106- ms .setAdditionalProperties (innerSchema );
107- schema = ms ;
108- } catch (Exception e ) {
103+ if (additionalProperties .isBoolean ()) {
109104 Boolean additionalPropsBoolean = Json .mapper ().convertValue (additionalProperties , Boolean .class );
105+ ((ObjectNode )node ).remove ("additionalProperties" );
110106 if (additionalPropsBoolean ) {
111107 schema = Json .mapper ().convertValue (node , MapSchema .class );
112108 } else {
113109 schema = Json .mapper ().convertValue (node , ObjectSchema .class );
114110 }
115111 schema .setAdditionalProperties (additionalPropsBoolean );
112+ } else {
113+ Schema innerSchema = Json .mapper ().convertValue (additionalProperties , Schema .class );
114+ ((ObjectNode )node ).remove ("additionalProperties" );
115+ MapSchema ms = Json .mapper ().convertValue (node , MapSchema .class );
116+ ms .setAdditionalProperties (innerSchema );
117+ schema = ms ;
116118 }
117-
118119 } else {
119120 schema = Json .mapper ().convertValue (node , ObjectSchema .class );
120121 }
0 commit comments