Package org.bson.codecs.configuration
Interface CodecProvider
- All Known Subinterfaces:
CodecRegistry
- All Known Implementing Classes:
BsonCodecProvider
,BsonValueCodecProvider
,CollectionCodecProvider
,DocumentCodecProvider
,EnumCodecProvider
,IterableCodecProvider
,JsonObjectCodecProvider
,Jsr310CodecProvider
,MapCodecProvider
,PojoCodecProvider
,UuidCodecProvider
,ValueCodecProvider
public interface CodecProvider
A provider of
Codec
instances. Typically, an instance of a class implementing this interface would be used to construct a
CodecRegistry
.
While the CodecProvider
interface adds no stipulations to the general contract for the Object.equals,
programmers who implement the CodecProvider
interface "directly" must exercise care if they choose to override the
Object.equals
. It is not necessary to do so, and the simplest course of action is to rely on Object's implementation, but the
implementer may wish to implement a "value comparison" in place of the default "reference comparison."
- Since:
- 3.0
-
Method Summary
Modifier and TypeMethodDescriptiondefault <T> Codec<T>
get
(Class<T> clazz, List<Type> typeArguments, CodecRegistry registry) Get aCodec
using the given context, which includes, most importantly, the Class for which aCodec
is required.<T> Codec<T>
get
(Class<T> clazz, CodecRegistry registry) Get aCodec
using the given context, which includes, most importantly, the Class for which aCodec
is required.
-
Method Details
-
get
Get aCodec
using the given context, which includes, most importantly, the Class for which aCodec
is required.This method is called by the driver only if
get(Class, List, CodecRegistry)
is not overridden, or is overridden such that it calls this method.- Type Parameters:
T
- the type of the class for which a Codec is required- Parameters:
clazz
- the Class for which to get a Codecregistry
- the registry to use for resolving dependent Codec instances- Returns:
- the Codec instance, which may be null, if this source is unable to provide one for the requested Class
-
get
Get aCodec
using the given context, which includes, most importantly, the Class for which aCodec
is required.The default implementation delegates to
get(Class, CodecRegistry)
, thus not propagatingtypeArguments
when it uses theregistry
.- Type Parameters:
T
- the type of the class for which a Codec is required- Parameters:
clazz
- the Class for which to get a CodectypeArguments
- The type arguments for theclazz
. The size of the list is either equal to the number of type parameters of theclazz
, or is zero. For example, ifclazz
isCollection
.class
, then the size oftypeArguments
is one, sinceCollection
has a single type parameter. The list may be empty either because theclazz
is not generic, or because anotherCodecProvider
did not propagateclazz
's type arguments to theregistry
when using it.registry
- the registry to use for resolving dependent Codec instances- Returns:
- the Codec instance, which may be null, if this source is unable to provide one for the requested Class
- Since:
- 4.10
-