// 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 { var versioner runtime.GroupVersioner if len(versions) == 0 { versioner = runtime.InternalGroupVersioner } else { versioner = schema.GroupVersions(versions) } return f.CodecForVersions(nil, f.universal, nil, versioner) }
// 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 { return versioning.NewDefaultingCodecForScheme(f.scheme, f.legacySerializer, f.universal, schema.GroupVersions(version), runtime.InternalGroupVersioner) }