func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory, options CodecFactoryOptions) []runtime.SerializerInfo { … } type CodecFactory … type CodecFactoryOptions … type CodecFactoryOptionsMutator … // EnablePretty enables including a pretty serializer along with the non-pretty one func EnablePretty(options *CodecFactoryOptions) { … } // DisablePretty disables including a pretty serializer along with the non-pretty one func DisablePretty(options *CodecFactoryOptions) { … } // EnableStrict enables configuring all serializers in strict mode func EnableStrict(options *CodecFactoryOptions) { … } // DisableStrict disables configuring all serializers in strict mode func DisableStrict(options *CodecFactoryOptions) { … } // WithSerializer configures a serializer to be supported in addition to the default serializers. func WithSerializer(f func(runtime.ObjectCreater, runtime.ObjectTyper) runtime.SerializerInfo) CodecFactoryOptionsMutator { … } // NewCodecFactory provides methods for retrieving serializers for the supported wire formats // and conversion wrappers to define preferred internal and external versions. In the future, // as the internal version is used less, callers may instead use a defaulting serializer and // only convert objects which are shared internally (Status, common API machinery). // // Mutators can be passed to change the CodecFactoryOptions before construction of the factory. // It is recommended to explicitly pass mutators instead of relying on defaults. // By default, Pretty is enabled -- this is conformant with previously supported behavior. // // TODO: allow other codecs to be compiled in? // TODO: accept a scheme interface func NewCodecFactory(scheme *runtime.Scheme, mutators ...CodecFactoryOptionsMutator) CodecFactory { … } // newCodecFactory is a helper for testing that allows a different metafactory to be specified. func newCodecFactory(scheme *runtime.Scheme, serializers []runtime.SerializerInfo) CodecFactory { … } // WithoutConversion returns a NegotiatedSerializer that performs no conversion, even if the // caller requests it. func (f CodecFactory) WithoutConversion() runtime.NegotiatedSerializer { … } // SupportedMediaTypes returns the RFC2046 media types that this factory has serializers for. func (f CodecFactory) SupportedMediaTypes() []runtime.SerializerInfo { … } // LegacyCodec encodes output to a given API versions, and decodes output into the internal form from // any recognized source. The returned codec will always encode output to JSON. If a type is not // found in the list of versions an error will be returned. // // This method is deprecated - clients and servers should negotiate a serializer by mime-type and // invoke CodecForVersions. Callers that need only to read data should use UniversalDecoder(). // // TODO: make this call exist only in pkg/api, and initialize it with the set of default versions. // All other callers will be forced to request a Codec directly. func (f CodecFactory) LegacyCodec(version ...schema.GroupVersion) runtime.Codec { … } // UniversalDeserializer can convert any stored data recognized by this factory into a Go object that satisfies // runtime.Object. It does not perform conversion. It does not perform defaulting. func (f CodecFactory) UniversalDeserializer() runtime.Decoder { … } // UniversalDecoder returns a runtime.Decoder capable of decoding all known API objects in all known formats. Used // by clients that do not need to encode objects but want to deserialize API objects stored on disk. Only decodes // objects in groups registered with the scheme. The GroupVersions passed may be used to select alternate // versions of objects to return - by default, runtime.APIVersionInternal is used. If any versions are specified, // unrecognized groups will be returned in the version they are encoded as (no conversion). This decoder performs // defaulting. // // TODO: the decoder will eventually be removed in favor of dealing with objects in their versioned form // TODO: only accept a group versioner func (f CodecFactory) UniversalDecoder(versions ...schema.GroupVersion) runtime.Decoder { … } // CodecForVersions creates a codec with the provided serializer. If an object is decoded and its group is not in the list, // it will default to runtime.APIVersionInternal. If encode is not specified for an object's group, the object is not // converted. If encode or decode are nil, no conversion is performed. func (f CodecFactory) CodecForVersions(encoder runtime.Encoder, decoder runtime.Decoder, encode runtime.GroupVersioner, decode runtime.GroupVersioner) runtime.Codec { … } // DecoderToVersion returns a decoder that targets the provided group version. func (f CodecFactory) DecoderToVersion(decoder runtime.Decoder, gv runtime.GroupVersioner) runtime.Decoder { … } // EncoderForVersion returns an encoder that targets the provided group version. func (f CodecFactory) EncoderForVersion(encoder runtime.Encoder, gv runtime.GroupVersioner) runtime.Encoder { … } type WithoutConversionCodecFactory … // EncoderForVersion returns an encoder that does not do conversion, but does set the group version kind of the object // when serialized. func (f WithoutConversionCodecFactory) EncoderForVersion(serializer runtime.Encoder, version runtime.GroupVersioner) runtime.Encoder { … } // DecoderToVersion returns an decoder that does not do conversion. func (f WithoutConversionCodecFactory) DecoderToVersion(serializer runtime.Decoder, _ runtime.GroupVersioner) runtime.Decoder { … }