public class CoderRegistry
extends java.lang.Object
CoderRegistry allows creating a Coder for a given Java class or
 type descriptor.
 Creation of the Coder is delegated to one of the many registered coder providers based upon the registration order.
 
By default, the coder provider precedence order is as follows:
 
registerCoderProvider(CoderProvider).
   CoderProviderRegistrar using a
       ServiceLoader. Note that the ServiceLoader registration order is consistent
       but may change due to the addition or removal of libraries exposed to the application. This
       can impact the coder returned if multiple coder providers are capable of supplying a coder
       for the specified type.
 Note that if multiple coder providers can provide a Coder for a
 given type, the precedence order above defines which CoderProvider is chosen.
| Modifier and Type | Method and Description | 
|---|---|
| static CoderRegistry | createDefault()Creates a CoderRegistry containing registrations for all standard coders part of the core Java
 Apache Beam SDK and also any registrations provided by  coder
 registrars. | 
| <T,OutputT> | getCoder(java.lang.Class<? extends T> subClass,
        java.lang.Class<T> baseClass,
        java.util.Map<java.lang.reflect.Type,? extends Coder<?>> knownCoders,
        java.lang.reflect.TypeVariable<?> param)Deprecated. 
 This method is to change in an unknown backwards incompatible way once support for
     this functionality is refined. | 
| <T> Coder<T> | getCoder(java.lang.Class<T> clazz)Returns the  Coderto use for values of the given class. | 
| <InputT,OutputT> | getCoder(TypeDescriptor<OutputT> typeDescriptor,
        TypeDescriptor<InputT> inputTypeDescriptor,
        Coder<InputT> inputCoder)Deprecated. 
 This method is to change in an unknown backwards incompatible way once support for
     this functionality is refined. | 
| <T> Coder<T> | getCoder(TypeDescriptor<T> type)Returns the  Coderto use for values of the given type. | 
| <InputT,OutputT> | getOutputCoder(SerializableFunction<InputT,OutputT> fn,
              Coder<InputT> inputCoder)Deprecated. 
 This method is to change in an unknown backwards incompatible way once support for
     this functionality is refined. | 
| void | registerCoderForClass(java.lang.Class<?> clazz,
                     Coder<?> coder)Registers the provided  Coderfor the given class. | 
| void | registerCoderForType(TypeDescriptor<?> type,
                    Coder<?> coder)Registers the provided  Coderfor the given type. | 
| void | registerCoderProvider(CoderProvider coderProvider) | 
public static CoderRegistry createDefault()
coder
 registrars.
 Multiple registrations which can produce a coder for a given type result in a Coder created by the (in order of precedence):
coder providers registered programmatically through registerCoderProvider(org.apache.beam.sdk.coders.CoderProvider).
   coder providers for core types found within the Apache Beam Java
       SDK being used.
   coder providers from the CoderProviderRegistrar with
       the lexicographically smallest class name being used.
 public void registerCoderProvider(CoderProvider coderProvider)
coderProvider as a potential CoderProvider which can produce Coder instances.
 This method prioritizes this CoderProvider over all prior registered coders.
 
See CoderProviders for common CoderProvider patterns.
public void registerCoderForClass(java.lang.Class<?> clazz,
                                  Coder<?> coder)
Coder for the given class.
 Note that this is equivalent to registerCoderForType(TypeDescriptor.of(clazz)). See
 registerCoderForType(TypeDescriptor, Coder) for further details.
public void registerCoderForType(TypeDescriptor<?> type, Coder<?> coder)
Coder for the given type.
 Note that this is equivalent to registerCoderProvider(CoderProviders.forCoder(type,
 coder)). See registerCoderProvider(org.apache.beam.sdk.coders.CoderProvider) and CoderProviders.forCoder(org.apache.beam.sdk.values.TypeDescriptor<?>, org.apache.beam.sdk.coders.Coder<?>) for further
 details.
public <T> Coder<T> getCoder(java.lang.Class<T> clazz) throws CannotProvideCoderException
Coder to use for values of the given class.CannotProvideCoderException - if a Coder cannot be providedpublic <T> Coder<T> getCoder(TypeDescriptor<T> type) throws CannotProvideCoderException
Coder to use for values of the given type.CannotProvideCoderException - if a Coder cannot be provided@Deprecated @Internal public <InputT,OutputT> Coder<OutputT> getCoder(TypeDescriptor<OutputT> typeDescriptor, TypeDescriptor<InputT> inputTypeDescriptor, Coder<InputT> inputCoder) throws CannotProvideCoderException
CannotProvideCoderException - if a Coder cannot be provided@Deprecated @Internal public <InputT,OutputT> Coder<OutputT> getOutputCoder(SerializableFunction<InputT,OutputT> fn, Coder<InputT> inputCoder) throws CannotProvideCoderException
Coder to use on elements produced by this function, given the Coder
 used for its input elements.CannotProvideCoderException - if a Coder cannot be provided@Deprecated @Internal public <T,OutputT> Coder<OutputT> getCoder(java.lang.Class<? extends T> subClass, java.lang.Class<T> baseClass, java.util.Map<java.lang.reflect.Type,? extends Coder<?>> knownCoders, java.lang.reflect.TypeVariable<?> param) throws CannotProvideCoderException
Coder to use for the specified type parameter specialization of the
 subclass, given Coders to use for all other type parameters (if any).CannotProvideCoderException - if a Coder cannot be provided