Modifier and Type | Field and Description |
---|---|
private ClassModel<T> |
classModel |
private java.util.concurrent.ConcurrentMap<ClassModel<?>,Codec<?>> |
codecCache |
private DiscriminatorLookup |
discriminatorLookup |
private static Logger |
LOGGER |
private CodecRegistry |
registry |
private boolean |
specialized |
Constructor and Description |
---|
PojoCodecImpl(ClassModel<T> classModel,
CodecRegistry registry,
DiscriminatorLookup discriminatorLookup) |
PojoCodecImpl(ClassModel<T> classModel,
CodecRegistry registry,
DiscriminatorLookup discriminatorLookup,
java.util.concurrent.ConcurrentMap<ClassModel<?>,Codec<?>> codecCache,
boolean specialized) |
Modifier and Type | Method and Description |
---|---|
private <S> void |
addToCache(PropertyModel<S> propertyModel) |
private <S,V> boolean |
areEquivalentTypes(java.lang.Class<S> t1,
java.lang.Class<V> t2) |
T |
decode(BsonReader reader,
DecoderContext decoderContext)
Decodes a BSON value from the given reader into an instance of the type parameter
T . |
private void |
decodeProperties(BsonReader reader,
DecoderContext decoderContext,
InstanceCreator<T> instanceCreator) |
private <S> void |
decodePropertyModel(BsonReader reader,
DecoderContext decoderContext,
InstanceCreator<T> instanceCreator,
java.lang.String name,
PropertyModel<S> propertyModel) |
void |
encode(BsonWriter writer,
T value,
EncoderContext encoderContext)
Encode an instance of the type parameter
T into a BSON value. |
private <S> void |
encodeProperty(BsonWriter writer,
T instance,
EncoderContext encoderContext,
PropertyModel<S> propertyModel) |
(package private) ClassModel<T> |
getClassModel() |
private <S> Codec<S> |
getCodecFromClass(java.lang.Class<S> clazz) |
private Codec<T> |
getCodecFromDocument(BsonReader reader,
boolean useDiscriminator,
java.lang.String discriminatorKey,
CodecRegistry registry,
DiscriminatorLookup discriminatorLookup,
Codec<T> defaultCodec) |
private <S> Codec<S> |
getCodecFromTypeData(TypeData<S> typeData) |
java.lang.Class<T> |
getEncoderClass()
Returns the Class instance that this encodes.
|
private <S,V> Codec<S> |
getInstanceCodec(PropertyModel<S> propertyModel,
java.lang.Class<V> instanceType) |
private PropertyModel<?> |
getPropertyModelByWriteName(ClassModel<T> classModel,
java.lang.String readName) |
private <S,V> ClassModel<S> |
getSpecializedClassModel(ClassModel<S> clazzModel,
PropertyModel<V> propertyModel) |
private <V> PropertyModel<V> |
getSpecializedPropertyModel(PropertyModel<V> propertyModel,
TypeParameterMap typeParameterMap,
java.util.List<TypeData<?>> propertyTypeParameters) |
private <S> Codec<S> |
specializePojoCodec(PropertyModel<S> propertyModel,
Codec<S> defaultCodec) |
java.lang.String |
toString() |
private static final Logger LOGGER
private final ClassModel<T> classModel
private final CodecRegistry registry
private final DiscriminatorLookup discriminatorLookup
private final java.util.concurrent.ConcurrentMap<ClassModel<?>,Codec<?>> codecCache
private final boolean specialized
PojoCodecImpl(ClassModel<T> classModel, CodecRegistry registry, DiscriminatorLookup discriminatorLookup)
PojoCodecImpl(ClassModel<T> classModel, CodecRegistry registry, DiscriminatorLookup discriminatorLookup, java.util.concurrent.ConcurrentMap<ClassModel<?>,Codec<?>> codecCache, boolean specialized)
public void encode(BsonWriter writer, T value, EncoderContext encoderContext)
Encoder
T
into a BSON value.writer
- the BSON writer to encode intovalue
- the value to encodeencoderContext
- the encoder contextpublic T decode(BsonReader reader, DecoderContext decoderContext)
Decoder
T
.reader
- the BSON readerdecoderContext
- the decoder contextT
.public java.lang.Class<T> getEncoderClass()
Encoder
public java.lang.String toString()
toString
in class java.lang.Object
ClassModel<T> getClassModel()
getClassModel
in class PojoCodec<T>
private <S> void encodeProperty(BsonWriter writer, T instance, EncoderContext encoderContext, PropertyModel<S> propertyModel)
private void decodeProperties(BsonReader reader, DecoderContext decoderContext, InstanceCreator<T> instanceCreator)
private <S> void decodePropertyModel(BsonReader reader, DecoderContext decoderContext, InstanceCreator<T> instanceCreator, java.lang.String name, PropertyModel<S> propertyModel)
private <S> void addToCache(PropertyModel<S> propertyModel)
private <S,V> Codec<S> getInstanceCodec(PropertyModel<S> propertyModel, java.lang.Class<V> instanceType)
private <S,V> boolean areEquivalentTypes(java.lang.Class<S> t1, java.lang.Class<V> t2)
private <S> Codec<S> getCodecFromClass(java.lang.Class<S> clazz)
private <S> Codec<S> specializePojoCodec(PropertyModel<S> propertyModel, Codec<S> defaultCodec)
private <S,V> ClassModel<S> getSpecializedClassModel(ClassModel<S> clazzModel, PropertyModel<V> propertyModel)
private <V> PropertyModel<V> getSpecializedPropertyModel(PropertyModel<V> propertyModel, TypeParameterMap typeParameterMap, java.util.List<TypeData<?>> propertyTypeParameters)
private Codec<T> getCodecFromDocument(BsonReader reader, boolean useDiscriminator, java.lang.String discriminatorKey, CodecRegistry registry, DiscriminatorLookup discriminatorLookup, Codec<T> defaultCodec)
private PropertyModel<?> getPropertyModelByWriteName(ClassModel<T> classModel, java.lang.String readName)