File tree Expand file tree Collapse file tree 1 file changed +9
-7
lines changed
commons-core/src/main/scala/com/avsystem/commons/serialization/cbor Expand file tree Collapse file tree 1 file changed +9
-7
lines changed Original file line number Diff line number Diff line change @@ -256,21 +256,23 @@ trait CborAdtInstances[T] {
256256}
257257
258258trait CborAdtPolyInstances [C [_]] {
259- private val alreadyValidated = AtomicBoolean (false )
260259 def stdCodec [T : GenCodec ]: GenObjectCodec [C [T ]]
261260 def metadata [T : GenCodec ]: CborAdtMetadata [C [T ]]
262- def cborCodec [T : GenCodec ]: GenObjectCodec [C [T ]] =
261+ def cborCodec [T : GenCodec ]( validate : Boolean ) : GenObjectCodec [C [T ]] =
263262 metadata.setup { metadata =>
264- if (! alreadyValidated.get()) {
265- metadata.validate()
266- alreadyValidated.set(true )
267- }
263+ if (validate) metadata.validate()
268264 }.adjustCodec(stdCodec)
269265}
270266
271267/**
272268 * Like [[HasCborCodec ]] but for parameterized (generic) data types.
273269 */
274270abstract class HasPolyCborCodec [C [_]](implicit instances : MacroInstances [CborOptimizedCodecs , CborAdtPolyInstances [C ]]) {
275- implicit def codec [T : GenCodec ]: GenObjectCodec [C [T ]] = instances(CborOptimizedCodecs , this ).cborCodec
271+ private val alreadyValidated = AtomicBoolean (false )
272+
273+ implicit def codec [T : GenCodec ]: GenObjectCodec [C [T ]] = {
274+ val codec = instances(CborOptimizedCodecs , this ).cborCodec(! alreadyValidated.get())
275+ if (! alreadyValidated.get()) alreadyValidated.set(true )
276+ codec
277+ }
276278}
You can’t perform that action at this time.
0 commit comments