@ -24,7 +24,7 @@ import (
var (
defaultValueDecoders DefaultValueDecoders
errCannotTruncate = errors . New ( "float64 can only be truncated to an integer type when truncation is enabled" )
errCannotTruncate = errors . New ( "float64 can only be truncated to a lower precis io n type when truncation is enabled" )
)
type decodeBinaryError struct {
@ -41,13 +41,16 @@ func newDefaultStructCodec() *StructCodec {
if err != nil {
// This function is called from the codec registration path, so errors can't be propagated. If there's an error
// constructing the StructCodec, we panic to avoid losing it.
panic ( fmt . Errorf ( "error creating default StructCodec: %v " , err ) )
panic ( fmt . Errorf ( "error creating default StructCodec: %w " , err ) )
}
return codec
}
// DefaultValueDecoders is a namespace type for the default ValueDecoders used
// when creating a registry.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
type DefaultValueDecoders struct { }
// RegisterDefaultDecoders will register the decoder methods attached to DefaultValueDecoders with
@ -56,6 +59,9 @@ type DefaultValueDecoders struct{}
// There is no support for decoding map[string]interface{} because there is no decoder for
// interface{}, so users must either register this decoder themselves or use the
// EmptyInterfaceDecoder available in the bson package.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) RegisterDefaultDecoders ( rb * RegistryBuilder ) {
if rb == nil {
panic ( errors . New ( "argument to RegisterDefaultDecoders must not be nil" ) )
@ -132,6 +138,9 @@ func (dvd DefaultValueDecoders) RegisterDefaultDecoders(rb *RegistryBuilder) {
}
// DDecodeValue is the ValueDecoderFunc for primitive.D instances.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) DDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . IsValid ( ) || ! val . CanSet ( ) || val . Type ( ) != tD {
return ValueDecoderError { Name : "DDecodeValue" , Kinds : [ ] reflect . Kind { reflect . Slice } , Received : val }
@ -169,7 +178,7 @@ func (dvd DefaultValueDecoders) DDecodeValue(dc DecodeContext, vr bsonrw.ValueRe
for {
key , elemVr , err := dr . ReadElement ( )
if err == bsonrw . ErrEOD {
if errors . Is ( err , bsonrw . ErrEOD ) {
break
} else if err != nil {
return err
@ -188,7 +197,7 @@ func (dvd DefaultValueDecoders) DDecodeValue(dc DecodeContext, vr bsonrw.ValueRe
return nil
}
func ( dvd DefaultValueDecoders ) booleanDecodeType ( dctx DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( dvd DefaultValueDecoders ) booleanDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t . Kind ( ) != reflect . Bool {
return emptyValue , ValueDecoderError {
Name : "BooleanDecodeValue" ,
@ -235,6 +244,9 @@ func (dvd DefaultValueDecoders) booleanDecodeType(dctx DecodeContext, vr bsonrw.
}
// BooleanDecodeValue is the ValueDecoderFunc for bool types.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) BooleanDecodeValue ( dctx DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . IsValid ( ) || ! val . CanSet ( ) || val . Kind ( ) != reflect . Bool {
return ValueDecoderError { Name : "BooleanDecodeValue" , Kinds : [ ] reflect . Kind { reflect . Bool } , Received : val }
@ -333,6 +345,9 @@ func (DefaultValueDecoders) intDecodeType(dc DecodeContext, vr bsonrw.ValueReade
}
// IntDecodeValue is the ValueDecoderFunc for int types.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) IntDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) {
return ValueDecoderError {
@ -434,7 +449,7 @@ func (dvd DefaultValueDecoders) UintDecodeValue(dc DecodeContext, vr bsonrw.Valu
return nil
}
func ( dvd DefaultValueDecoders ) floatDecodeType ( e c DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( dvd DefaultValueDecoders ) floatDecodeType ( d c DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
var f float64
var err error
switch vrType := vr . Type ( ) ; vrType {
@ -477,7 +492,7 @@ func (dvd DefaultValueDecoders) floatDecodeType(ec DecodeContext, vr bsonrw.Valu
switch t . Kind ( ) {
case reflect . Float32 :
if ! e c. Truncate && float64 ( float32 ( f ) ) != f {
if ! d c. Truncate && float64 ( float32 ( f ) ) != f {
return emptyValue , errCannotTruncate
}
@ -494,6 +509,9 @@ func (dvd DefaultValueDecoders) floatDecodeType(ec DecodeContext, vr bsonrw.Valu
}
// FloatDecodeValue is the ValueDecoderFunc for float types.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) FloatDecodeValue ( ec DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) {
return ValueDecoderError {
@ -515,7 +533,7 @@ func (dvd DefaultValueDecoders) FloatDecodeValue(ec DecodeContext, vr bsonrw.Val
// StringDecodeValue is the ValueDecoderFunc for string types.
//
// Deprecated: StringDecodeValue is not registered by default. Use StringCodec.DecodeValue instead.
func ( dvd DefaultValueDecoders ) StringDecodeValue ( dctx DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
func ( dvd DefaultValueDecoders ) StringDecodeValue ( _ DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
var str string
var err error
switch vr . Type ( ) {
@ -536,7 +554,7 @@ func (dvd DefaultValueDecoders) StringDecodeValue(dctx DecodeContext, vr bsonrw.
return nil
}
func ( DefaultValueDecoders ) javaScriptDecodeType ( dctx DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) javaScriptDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tJavaScript {
return emptyValue , ValueDecoderError {
Name : "JavaScriptDecodeValue" ,
@ -565,6 +583,9 @@ func (DefaultValueDecoders) javaScriptDecodeType(dctx DecodeContext, vr bsonrw.V
}
// JavaScriptDecodeValue is the ValueDecoderFunc for the primitive.JavaScript type.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) JavaScriptDecodeValue ( dctx DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tJavaScript {
return ValueDecoderError { Name : "JavaScriptDecodeValue" , Types : [ ] reflect . Type { tJavaScript } , Received : val }
@ -579,7 +600,7 @@ func (dvd DefaultValueDecoders) JavaScriptDecodeValue(dctx DecodeContext, vr bso
return nil
}
func ( DefaultValueDecoders ) symbolDecodeType ( dctx DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) symbolDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tSymbol {
return emptyValue , ValueDecoderError {
Name : "SymbolDecodeValue" ,
@ -620,6 +641,9 @@ func (DefaultValueDecoders) symbolDecodeType(dctx DecodeContext, vr bsonrw.Value
}
// SymbolDecodeValue is the ValueDecoderFunc for the primitive.Symbol type.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) SymbolDecodeValue ( dctx DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tSymbol {
return ValueDecoderError { Name : "SymbolDecodeValue" , Types : [ ] reflect . Type { tSymbol } , Received : val }
@ -634,7 +658,7 @@ func (dvd DefaultValueDecoders) SymbolDecodeValue(dctx DecodeContext, vr bsonrw.
return nil
}
func ( DefaultValueDecoders ) binaryDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) binaryDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tBinary {
return emptyValue , ValueDecoderError {
Name : "BinaryDecodeValue" ,
@ -664,6 +688,9 @@ func (DefaultValueDecoders) binaryDecodeType(dc DecodeContext, vr bsonrw.ValueRe
}
// BinaryDecodeValue is the ValueDecoderFunc for Binary.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) BinaryDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tBinary {
return ValueDecoderError { Name : "BinaryDecodeValue" , Types : [ ] reflect . Type { tBinary } , Received : val }
@ -678,7 +705,7 @@ func (dvd DefaultValueDecoders) BinaryDecodeValue(dc DecodeContext, vr bsonrw.Va
return nil
}
func ( DefaultValueDecoders ) undefinedDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) undefinedDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tUndefined {
return emptyValue , ValueDecoderError {
Name : "UndefinedDecodeValue" ,
@ -704,6 +731,9 @@ func (DefaultValueDecoders) undefinedDecodeType(dc DecodeContext, vr bsonrw.Valu
}
// UndefinedDecodeValue is the ValueDecoderFunc for Undefined.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) UndefinedDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tUndefined {
return ValueDecoderError { Name : "UndefinedDecodeValue" , Types : [ ] reflect . Type { tUndefined } , Received : val }
@ -719,7 +749,7 @@ func (dvd DefaultValueDecoders) UndefinedDecodeValue(dc DecodeContext, vr bsonrw
}
// Accept both 12-byte string and pretty-printed 24-byte hex string formats.
func ( dvd DefaultValueDecoders ) objectIDDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( dvd DefaultValueDecoders ) objectIDDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tOID {
return emptyValue , ValueDecoderError {
Name : "ObjectIDDecodeValue" ,
@ -765,6 +795,9 @@ func (dvd DefaultValueDecoders) objectIDDecodeType(dc DecodeContext, vr bsonrw.V
}
// ObjectIDDecodeValue is the ValueDecoderFunc for primitive.ObjectID.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) ObjectIDDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tOID {
return ValueDecoderError { Name : "ObjectIDDecodeValue" , Types : [ ] reflect . Type { tOID } , Received : val }
@ -779,7 +812,7 @@ func (dvd DefaultValueDecoders) ObjectIDDecodeValue(dc DecodeContext, vr bsonrw.
return nil
}
func ( DefaultValueDecoders ) dateTimeDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) dateTimeDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tDateTime {
return emptyValue , ValueDecoderError {
Name : "DateTimeDecodeValue" ,
@ -808,6 +841,9 @@ func (DefaultValueDecoders) dateTimeDecodeType(dc DecodeContext, vr bsonrw.Value
}
// DateTimeDecodeValue is the ValueDecoderFunc for DateTime.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) DateTimeDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tDateTime {
return ValueDecoderError { Name : "DateTimeDecodeValue" , Types : [ ] reflect . Type { tDateTime } , Received : val }
@ -822,7 +858,7 @@ func (dvd DefaultValueDecoders) DateTimeDecodeValue(dc DecodeContext, vr bsonrw.
return nil
}
func ( DefaultValueDecoders ) nullDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) nullDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tNull {
return emptyValue , ValueDecoderError {
Name : "NullDecodeValue" ,
@ -848,6 +884,9 @@ func (DefaultValueDecoders) nullDecodeType(dc DecodeContext, vr bsonrw.ValueRead
}
// NullDecodeValue is the ValueDecoderFunc for Null.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) NullDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tNull {
return ValueDecoderError { Name : "NullDecodeValue" , Types : [ ] reflect . Type { tNull } , Received : val }
@ -862,7 +901,7 @@ func (dvd DefaultValueDecoders) NullDecodeValue(dc DecodeContext, vr bsonrw.Valu
return nil
}
func ( DefaultValueDecoders ) regexDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) regexDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tRegex {
return emptyValue , ValueDecoderError {
Name : "RegexDecodeValue" ,
@ -891,6 +930,9 @@ func (DefaultValueDecoders) regexDecodeType(dc DecodeContext, vr bsonrw.ValueRea
}
// RegexDecodeValue is the ValueDecoderFunc for Regex.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) RegexDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tRegex {
return ValueDecoderError { Name : "RegexDecodeValue" , Types : [ ] reflect . Type { tRegex } , Received : val }
@ -905,7 +947,7 @@ func (dvd DefaultValueDecoders) RegexDecodeValue(dc DecodeContext, vr bsonrw.Val
return nil
}
func ( DefaultValueDecoders ) dBPointerDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) dBPointerDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tDBPointer {
return emptyValue , ValueDecoderError {
Name : "DBPointerDecodeValue" ,
@ -935,6 +977,9 @@ func (DefaultValueDecoders) dBPointerDecodeType(dc DecodeContext, vr bsonrw.Valu
}
// DBPointerDecodeValue is the ValueDecoderFunc for DBPointer.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) DBPointerDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tDBPointer {
return ValueDecoderError { Name : "DBPointerDecodeValue" , Types : [ ] reflect . Type { tDBPointer } , Received : val }
@ -949,7 +994,7 @@ func (dvd DefaultValueDecoders) DBPointerDecodeValue(dc DecodeContext, vr bsonrw
return nil
}
func ( DefaultValueDecoders ) timestampDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , reflectType reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) timestampDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , reflectType reflect . Type ) ( reflect . Value , error ) {
if reflectType != tTimestamp {
return emptyValue , ValueDecoderError {
Name : "TimestampDecodeValue" ,
@ -978,6 +1023,9 @@ func (DefaultValueDecoders) timestampDecodeType(dc DecodeContext, vr bsonrw.Valu
}
// TimestampDecodeValue is the ValueDecoderFunc for Timestamp.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) TimestampDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tTimestamp {
return ValueDecoderError { Name : "TimestampDecodeValue" , Types : [ ] reflect . Type { tTimestamp } , Received : val }
@ -992,7 +1040,7 @@ func (dvd DefaultValueDecoders) TimestampDecodeValue(dc DecodeContext, vr bsonrw
return nil
}
func ( DefaultValueDecoders ) minKeyDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) minKeyDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tMinKey {
return emptyValue , ValueDecoderError {
Name : "MinKeyDecodeValue" ,
@ -1020,6 +1068,9 @@ func (DefaultValueDecoders) minKeyDecodeType(dc DecodeContext, vr bsonrw.ValueRe
}
// MinKeyDecodeValue is the ValueDecoderFunc for MinKey.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) MinKeyDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tMinKey {
return ValueDecoderError { Name : "MinKeyDecodeValue" , Types : [ ] reflect . Type { tMinKey } , Received : val }
@ -1034,7 +1085,7 @@ func (dvd DefaultValueDecoders) MinKeyDecodeValue(dc DecodeContext, vr bsonrw.Va
return nil
}
func ( DefaultValueDecoders ) maxKeyDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( DefaultValueDecoders ) maxKeyDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tMaxKey {
return emptyValue , ValueDecoderError {
Name : "MaxKeyDecodeValue" ,
@ -1062,6 +1113,9 @@ func (DefaultValueDecoders) maxKeyDecodeType(dc DecodeContext, vr bsonrw.ValueRe
}
// MaxKeyDecodeValue is the ValueDecoderFunc for MaxKey.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) MaxKeyDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tMaxKey {
return ValueDecoderError { Name : "MaxKeyDecodeValue" , Types : [ ] reflect . Type { tMaxKey } , Received : val }
@ -1076,7 +1130,7 @@ func (dvd DefaultValueDecoders) MaxKeyDecodeValue(dc DecodeContext, vr bsonrw.Va
return nil
}
func ( dvd DefaultValueDecoders ) decimal128DecodeType ( dctx DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( dvd DefaultValueDecoders ) decimal128DecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tDecimal {
return emptyValue , ValueDecoderError {
Name : "Decimal128DecodeValue" ,
@ -1105,6 +1159,9 @@ func (dvd DefaultValueDecoders) decimal128DecodeType(dctx DecodeContext, vr bson
}
// Decimal128DecodeValue is the ValueDecoderFunc for primitive.Decimal128.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) Decimal128DecodeValue ( dctx DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tDecimal {
return ValueDecoderError { Name : "Decimal128DecodeValue" , Types : [ ] reflect . Type { tDecimal } , Received : val }
@ -1119,7 +1176,7 @@ func (dvd DefaultValueDecoders) Decimal128DecodeValue(dctx DecodeContext, vr bso
return nil
}
func ( dvd DefaultValueDecoders ) jsonNumberDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( dvd DefaultValueDecoders ) jsonNumberDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tJSONNumber {
return emptyValue , ValueDecoderError {
Name : "JSONNumberDecodeValue" ,
@ -1164,6 +1221,9 @@ func (dvd DefaultValueDecoders) jsonNumberDecodeType(dc DecodeContext, vr bsonrw
}
// JSONNumberDecodeValue is the ValueDecoderFunc for json.Number.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) JSONNumberDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tJSONNumber {
return ValueDecoderError { Name : "JSONNumberDecodeValue" , Types : [ ] reflect . Type { tJSONNumber } , Received : val }
@ -1178,7 +1238,7 @@ func (dvd DefaultValueDecoders) JSONNumberDecodeValue(dc DecodeContext, vr bsonr
return nil
}
func ( dvd DefaultValueDecoders ) urlDecodeType ( dc DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
func ( dvd DefaultValueDecoders ) urlDecodeType ( _ DecodeContext , vr bsonrw . ValueReader , t reflect . Type ) ( reflect . Value , error ) {
if t != tURL {
return emptyValue , ValueDecoderError {
Name : "URLDecodeValue" ,
@ -1213,6 +1273,9 @@ func (dvd DefaultValueDecoders) urlDecodeType(dc DecodeContext, vr bsonrw.ValueR
}
// URLDecodeValue is the ValueDecoderFunc for url.URL.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) URLDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tURL {
return ValueDecoderError { Name : "URLDecodeValue" , Types : [ ] reflect . Type { tURL } , Received : val }
@ -1230,7 +1293,7 @@ func (dvd DefaultValueDecoders) URLDecodeValue(dc DecodeContext, vr bsonrw.Value
// TimeDecodeValue is the ValueDecoderFunc for time.Time.
//
// Deprecated: TimeDecodeValue is not registered by default. Use TimeCodec.DecodeValue instead.
func ( dvd DefaultValueDecoders ) TimeDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
func ( dvd DefaultValueDecoders ) TimeDecodeValue ( _ DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if vr . Type ( ) != bsontype . DateTime {
return fmt . Errorf ( "cannot decode %v into a time.Time" , vr . Type ( ) )
}
@ -1251,7 +1314,7 @@ func (dvd DefaultValueDecoders) TimeDecodeValue(dc DecodeContext, vr bsonrw.Valu
// ByteSliceDecodeValue is the ValueDecoderFunc for []byte.
//
// Deprecated: ByteSliceDecodeValue is not registered by default. Use ByteSliceCodec.DecodeValue instead.
func ( dvd DefaultValueDecoders ) ByteSliceDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
func ( dvd DefaultValueDecoders ) ByteSliceDecodeValue ( _ DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if vr . Type ( ) != bsontype . Binary && vr . Type ( ) != bsontype . Null {
return fmt . Errorf ( "cannot decode %v into a []byte" , vr . Type ( ) )
}
@ -1316,7 +1379,7 @@ func (dvd DefaultValueDecoders) MapDecodeValue(dc DecodeContext, vr bsonrw.Value
keyType := val . Type ( ) . Key ( )
for {
key , vr , err := dr . ReadElement ( )
if err == bsonrw . ErrEOD {
if errors . Is ( err , bsonrw . ErrEOD ) {
break
}
if err != nil {
@ -1336,6 +1399,9 @@ func (dvd DefaultValueDecoders) MapDecodeValue(dc DecodeContext, vr bsonrw.Value
}
// ArrayDecodeValue is the ValueDecoderFunc for array types.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) ArrayDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . IsValid ( ) || val . Kind ( ) != reflect . Array {
return ValueDecoderError { Name : "ArrayDecodeValue" , Kinds : [ ] reflect . Kind { reflect . Array } , Received : val }
@ -1447,7 +1513,10 @@ func (dvd DefaultValueDecoders) SliceDecodeValue(dc DecodeContext, vr bsonrw.Val
}
// ValueUnmarshalerDecodeValue is the ValueDecoderFunc for ValueUnmarshaler implementations.
func ( dvd DefaultValueDecoders ) ValueUnmarshalerDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) ValueUnmarshalerDecodeValue ( _ DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . IsValid ( ) || ( ! val . Type ( ) . Implements ( tValueUnmarshaler ) && ! reflect . PtrTo ( val . Type ( ) ) . Implements ( tValueUnmarshaler ) ) {
return ValueDecoderError { Name : "ValueUnmarshalerDecodeValue" , Types : [ ] reflect . Type { tValueUnmarshaler } , Received : val }
}
@ -1471,16 +1540,19 @@ func (dvd DefaultValueDecoders) ValueUnmarshalerDecodeValue(dc DecodeContext, vr
return err
}
fn := val . Convert ( tValueUnmarshaler ) . MethodByName ( "UnmarshalBSONValue" )
errVal := fn . Call ( [ ] reflect . Value { reflect . ValueOf ( t ) , reflect . ValueOf ( src ) } ) [ 0 ]
if ! errVal . IsNil ( ) {
return errVal . Interface ( ) . ( error )
m , ok := val . Interface ( ) . ( ValueUnmarshaler )
if ! ok {
// NB: this error should be unreachable due to the above checks
return ValueDecoderError { Name : "ValueUnmarshalerDecodeValue" , Types : [ ] reflect . Type { tValueUnmarshaler } , Received : val }
}
return nil
return m . UnmarshalBSONValue ( t , src )
}
// UnmarshalerDecodeValue is the ValueDecoderFunc for Unmarshaler implementations.
func ( dvd DefaultValueDecoders ) UnmarshalerDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) UnmarshalerDecodeValue ( _ DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . IsValid ( ) || ( ! val . Type ( ) . Implements ( tUnmarshaler ) && ! reflect . PtrTo ( val . Type ( ) ) . Implements ( tUnmarshaler ) ) {
return ValueDecoderError { Name : "UnmarshalerDecodeValue" , Types : [ ] reflect . Type { tUnmarshaler } , Received : val }
}
@ -1516,12 +1588,12 @@ func (dvd DefaultValueDecoders) UnmarshalerDecodeValue(dc DecodeContext, vr bson
val = val . Addr ( ) // If the type doesn't implement the interface, a pointer to it must.
}
fn := val . Convert ( tUnmarshaler ) . MethodByName ( "UnmarshalBSON" )
errVal := fn . Call ( [ ] reflect . Value { reflect . ValueOf ( src ) } ) [ 0 ]
if ! errVal . IsNil ( ) {
return errVal . Interface ( ) . ( error )
m , ok := val . Interface ( ) . ( Unmarshaler )
if ! ok {
// NB: this error should be unreachable due to the above checks
return ValueDecoderError { Name : "UnmarshalerDecodeValue" , Types : [ ] reflect . Type { tUnmarshaler } , Received : val }
}
return nil
return m . UnmarshalBSON ( src )
}
// EmptyInterfaceDecodeValue is the ValueDecoderFunc for interface{}.
@ -1565,7 +1637,10 @@ func (dvd DefaultValueDecoders) EmptyInterfaceDecodeValue(dc DecodeContext, vr b
}
// CoreDocumentDecodeValue is the ValueDecoderFunc for bsoncore.Document.
func ( DefaultValueDecoders ) CoreDocumentDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( DefaultValueDecoders ) CoreDocumentDecodeValue ( _ DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tCoreDocument {
return ValueDecoderError { Name : "CoreDocumentDecodeValue" , Types : [ ] reflect . Type { tCoreDocument } , Received : val }
}
@ -1600,7 +1675,7 @@ func (dvd DefaultValueDecoders) decodeDefault(dc DecodeContext, vr bsonrw.ValueR
idx := 0
for {
vr , err := ar . ReadValue ( )
if err == bsonrw . ErrEOA {
if errors . Is ( err , bsonrw . ErrEOA ) {
break
}
if err != nil {
@ -1671,6 +1746,9 @@ func (dvd DefaultValueDecoders) codeWithScopeDecodeType(dc DecodeContext, vr bso
}
// CodeWithScopeDecodeValue is the ValueDecoderFunc for CodeWithScope.
//
// Deprecated: Use [go.mongodb.org/mongo-driver/bson.NewRegistry] to get a registry with all default
// value decoders registered.
func ( dvd DefaultValueDecoders ) CodeWithScopeDecodeValue ( dc DecodeContext , vr bsonrw . ValueReader , val reflect . Value ) error {
if ! val . CanSet ( ) || val . Type ( ) != tCodeWithScope {
return ValueDecoderError { Name : "CodeWithScopeDecodeValue" , Types : [ ] reflect . Type { tCodeWithScope } , Received : val }
@ -1709,7 +1787,7 @@ func (DefaultValueDecoders) decodeElemsFromDocumentReader(dc DecodeContext, dr b
elems := make ( [ ] reflect . Value , 0 )
for {
key , vr , err := dr . ReadElement ( )
if err == bsonrw . ErrEOD {
if errors . Is ( err , bsonrw . ErrEOD ) {
break
}
if err != nil {