public final class BsonPlugin
extends io.vena.bosk.SerializationPlugin
| Constructor and Description |
|---|
BsonPlugin() |
| Modifier and Type | Method and Description |
|---|---|
<R extends io.vena.bosk.Entity> |
codecProviderFor(io.vena.bosk.Bosk<R> bosk)
Note that the
CodecProvider is Class-based, so it has
anemic type information for generics due to type erasure. |
<T,R extends io.vena.bosk.Entity> |
getCodec(java.lang.reflect.Type targetType,
java.lang.Class<T> targetClass,
org.bson.codecs.configuration.CodecRegistry registry,
io.vena.bosk.Bosk<R> bosk)
Like
codecProviderFor(bosk).get(targetType, registry)
except this works more broadly because it can accept a ParameterizedType for generic classes. |
public <R extends io.vena.bosk.Entity> org.bson.codecs.configuration.CodecProvider codecProviderFor(io.vena.bosk.Bosk<R> bosk)
CodecProvider is Class-based, so it has
anemic type information for generics due to type erasure. Because of
this, the returned CodecProvider is unable to provide Codecs for certain generic types.
In response to this shortcoming, you can access Codecs for any
type using getCodec(Type, Class, CodecRegistry, Bosk)
public <T,R extends io.vena.bosk.Entity> org.bson.codecs.Codec<T> getCodec(java.lang.reflect.Type targetType,
java.lang.Class<T> targetClass,
org.bson.codecs.configuration.CodecRegistry registry,
io.vena.bosk.Bosk<R> bosk)
codecProviderFor(bosk).get(targetType, registry)
except this works more broadly because it can accept a ParameterizedType for generic classes.R - root type of bosktargetClass - must match targetType. This is provided only to help Java do type inference and avoid ugly and unnecessary type casts.