Rendering causes bits to be set on structs in the model. Concurrency causes race issues with reading a writing of these bits, as there is no locking in the model.
Until now. locking prevents concurrent renders that use a shared model from conflicting with one another.
Addresses #163 and https://github.com/pb33f/libopenapi-validator/issues/23
Signed-off-by: quobix <dave@quobix.com>
`unevaluatedProperties` was not being handled correctly by the high-level v3 schema. When being rendered down for validation, the correct type on the dynamic value was not being set correctly. This has been resolved without any change in coverage or needing new tests.
Signed-off-by: Dave Shanley <dave@quobix.com>
Discovered when upgrading vacuum and deeper integration with libopenapi and performing hundreds more tests.
Signed-off-by: Dave Shanley <dave@quobix.com>
When `additionalProperties` is a map, it's treated as a SchemaProxy in the low-level model. This proxy was being incorrectly lifted up into the high-model.
@TristanSpeakEasy: "ReadOnly/WriteOnly are *bool but could be simplified to bool as they default to false always. It is always a bit awkward in Golang to work with pointers and if possible its great to avoid them especially when the absence of a value in the yaml/json doc defaults to false"
Done.
prefixItems is a property of JSONSchema and supported by OpenAPI 3.1, this update adds support for `prefixItems` in low and high models. It's essentially a copy of the `items` property, but allows seperate configuration of both, without combining them and muddling things for clarity.
Signed-off-by: Dave Shanley <dave@quobix.com>
Multiple polymorphic, deeply embedded schemas cause resolving issues as a channel waits forever due to a counting issue.
This has been resolved.
Signed-off-by: Dave Shanley <dshanley@splunk.com>
A feature request from Travis Newhouse to make it easier to know which primitives have been set, and which have not. defaulting everything to 0 or false just doesn't work so well.