Skip to content

Commit 71b4e22

Browse files
committed
RUBY-3117 remove all references to BSON::Config.validating_keys?
1 parent dea9e64 commit 71b4e22

File tree

9 files changed

+41
-98
lines changed

9 files changed

+41
-98
lines changed

lib/mongo/grid/file/chunk.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,12 @@ def initialize(document)
133133
#
134134
# @param [ BSON::ByteBuffer ] buffer The encoded BSON buffer to append to.
135135
# @param [ true, false ] validating_keys Whether keys should be validated when serializing.
136+
# This option is deprecated and will not be used. It will removed in version 3.0.
136137
#
137138
# @return [ String ] The raw BSON data.
138139
#
139140
# @since 2.0.0
140-
def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = BSON::Config.validating_keys?)
141+
def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = nil)
141142
document.to_bson(buffer)
142143
end
143144

lib/mongo/grid/file/info.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,12 @@ def update_md5(bytes)
228228
#
229229
# @param [ BSON::ByteBuffer ] buffer The encoded BSON buffer to append to.
230230
# @param [ true, false ] validating_keys Whether keys should be validated when serializing.
231+
# This option is deprecated and will not be used. It will removed in version 3.0.
231232
#
232233
# @return [ String ] The raw BSON data.
233234
#
234235
# @since 2.0.0
235-
def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = BSON::Config.validating_keys?)
236+
def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = nil)
236237
if @client_md5 && !document[:md5]
237238
document[:md5] = @client_md5.hexdigest
238239
end

lib/mongo/protocol/bit_vector.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ def initialize(layout)
3939
#
4040
# @param buffer [ String ] Buffer to receive the serialized vector
4141
# @param value [ Array<Symbol> ] Array of flags to encode
42+
# @param [ true, false ] validating_keys Whether keys should be validated when serializing.
43+
# This option is deprecated and will not be used. It will removed in version 3.0.
4244
#
4345
# @return [ String ] Buffer that received the serialized vector
44-
def serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
46+
def serialize(buffer, value, validating_keys = nil)
4547
bits = 0
4648
value.each { |flag| bits |= (@masks[flag] || 0) }
4749
buffer.put_int32(bits)

lib/mongo/protocol/caching_hash.rb

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,15 @@ def bson_type
3838
#
3939
# @param [ BSON::ByteBuffer ] buffer The encoded BSON buffer to append to.
4040
# @param [ true, false ] validating_keys Whether keys should be validated when serializing.
41+
# This option is deprecated and will not be used. It will removed in version 3.0.
4142
#
4243
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
43-
def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = BSON::Config.validating_keys?)
44+
def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = nil)
4445
if !@bytes
45-
@bytes = @hash.to_bson(BSON::ByteBuffer.new, validating_keys).to_s
46-
elsif needs_validation?(validating_keys)
47-
@validated = true
48-
return @hash.to_bson(buffer, validating_keys)
46+
@bytes = @hash.to_bson(BSON::ByteBuffer.new).to_s
4947
end
50-
@validated ||= validating_keys
5148
buffer.put_bytes(@bytes)
5249
end
53-
54-
private
55-
56-
# Checks the current value for validating keys, and whether or not this
57-
# bson has been validated in the past, and decides if we need to recalculate
58-
# the to_bson to check the validations.
59-
#
60-
# @param [ true, false ] validating_keys Whether keys should be validated when serializing.
61-
#
62-
# @return [ true, false ] Whether or not the bson needs to be recalculated
63-
# with validation.
64-
def needs_validation?(validating_keys)
65-
!@validated && validating_keys
66-
end
6750
end
6851
end
6952
end

lib/mongo/protocol/message.rb

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -354,16 +354,16 @@ def serialize_fields(buffer, max_bson_size = nil)
354354
if field[:multi]
355355
value.each do |item|
356356
if field[:type].respond_to?(:size_limited?)
357-
field[:type].serialize(buffer, item, max_bson_size, validating_keys?)
357+
field[:type].serialize(buffer, item, max_bson_size)
358358
else
359-
field[:type].serialize(buffer, item, validating_keys?)
359+
field[:type].serialize(buffer, item)
360360
end
361361
end
362362
else
363363
if field[:type].respond_to?(:size_limited?)
364-
field[:type].serialize(buffer, value, max_bson_size, validating_keys?)
364+
field[:type].serialize(buffer, value, max_bson_size)
365365
else
366-
field[:type].serialize(buffer, value, validating_keys?)
366+
field[:type].serialize(buffer, value)
367367
end
368368
end
369369
end
@@ -456,10 +456,6 @@ def self.deserialize_field(message, io, field, options = {})
456456
field[:type].deserialize(io, options)
457457
)
458458
end
459-
460-
def validating_keys?
461-
@options[:validating_keys] if @options
462-
end
463459
end
464460
end
465461
end

lib/mongo/protocol/msg.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class Msg < Message
5858
# @option options [ true, false ] validating_keys Whether keys should be
5959
# validated for being valid document keys (i.e. not begin with $ and
6060
# not contain dots).
61+
# This option is deprecated and will not be used. It will removed in version 3.0.
6162
#
6263
# @api private
6364
#

lib/mongo/protocol/serializers.rb

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ module Header
5151
#
5252
# @param buffer [ String ] Buffer to receive the serialized value.
5353
# @param value [ String ] Header value to be serialized.
54+
# @param [ true, false ] validating_keys Whether keys should be validated when serializing.
55+
# This option is deprecated and will not be used. It will removed in version 3.0.
5456
#
5557
# @return [ String ] Buffer with serialized value.
56-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
58+
def self.serialize(buffer, value, validating_keys = nil)
5759
buffer.put_bytes(value.pack(HEADER_PACK))
5860
end
5961

@@ -80,7 +82,7 @@ module CString
8082
# @param value [ String ] The string to be serialized.
8183
#
8284
# @return [ String ] Buffer with serialized value.
83-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
85+
def self.serialize(buffer, value, validating_keys = nil)
8486
buffer.put_cstring(value)
8587
end
8688
end
@@ -96,7 +98,7 @@ module Zero
9698
# @param value [ Fixnum ] Ignored value.
9799
#
98100
# @return [ String ] Buffer with serialized value.
99-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
101+
def self.serialize(buffer, value, validating_keys = nil)
100102
buffer.put_int32(ZERO)
101103
end
102104
end
@@ -112,7 +114,7 @@ module Int32
112114
# @param value [ Integer | BSON::Int32 ] 32-bit integer to be serialized.
113115
#
114116
# @return [String] Buffer with serialized value.
115-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
117+
def self.serialize(buffer, value, validating_keys = nil)
116118
if value.is_a?(BSON::Int32)
117119
if value.respond_to?(:value)
118120
# bson-ruby >= 4.6.0
@@ -146,7 +148,7 @@ module Int64
146148
# @param value [ Integer | BSON::Int64 ] 64-bit integer to be serialized.
147149
#
148150
# @return [ String ] Buffer with serialized value.
149-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
151+
def self.serialize(buffer, value, validating_keys = nil)
150152
if value.is_a?(BSON::Int64)
151153
if value.respond_to?(:value)
152154
# bson-ruby >= 4.6.0
@@ -182,19 +184,20 @@ module Sections
182184
# @param [ Array<Hash, BSON::Document> ] value The sections to be serialized.
183185
# @param [ Fixnum ] max_bson_size The max bson size of documents in the sections.
184186
# @param [ true, false ] validating_keys Whether to validate document keys.
187+
# This option is deprecated and will not be used. It will removed in version 3.0.
185188
#
186189
# @return [ BSON::ByteBuffer ] Buffer with serialized value.
187190
#
188191
# @since 2.5.0
189-
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = BSON::Config.validating_keys?)
192+
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = nil)
190193
value.each do |section|
191194
case section[:type]
192195
when PayloadZero::TYPE
193-
PayloadZero.serialize(buffer, section[:payload], max_bson_size, false)
196+
PayloadZero.serialize(buffer, section[:payload], max_bson_size)
194197
when nil
195-
PayloadZero.serialize(buffer, section[:payload], max_bson_size, false)
198+
PayloadZero.serialize(buffer, section[:payload], max_bson_size)
196199
when PayloadOne::TYPE
197-
PayloadOne.serialize(buffer, section[:payload], max_bson_size, validating_keys)
200+
PayloadOne.serialize(buffer, section[:payload], max_bson_size)
198201
else
199202
raise Error::UnknownPayloadType.new(section[:type])
200203
end
@@ -259,13 +262,14 @@ module PayloadZero
259262
# @param [ BSON::Document, Hash ] value The object to serialize.
260263
# @param [ Fixnum ] max_bson_size The max bson size of documents in the section.
261264
# @param [ true, false ] validating_keys Whether to validate document keys.
265+
# This option is deprecated and will not be used. It will removed in version 3.0.
262266
#
263267
# @return [ BSON::ByteBuffer ] Buffer with serialized value.
264268
#
265269
# @since 2.5.0
266-
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = BSON::Config.validating_keys?)
270+
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = nil)
267271
buffer.put_byte(TYPE_BYTE)
268-
Serializers::Document.serialize(buffer, value, max_bson_size, validating_keys)
272+
Serializers::Document.serialize(buffer, value, max_bson_size)
269273
end
270274

271275
# Deserializes a section of payload type 0 of an OP_MSG from the IO stream.
@@ -307,17 +311,18 @@ module PayloadOne
307311
# @param [ BSON::Document, Hash ] value The object to serialize.
308312
# @param [ Fixnum ] max_bson_size The max bson size of documents in the section.
309313
# @param [ true, false ] validating_keys Whether to validate document keys.
314+
# This option is deprecated and will not be used. It will removed in version 3.0.
310315
#
311316
# @return [ BSON::ByteBuffer ] Buffer with serialized value.
312317
#
313318
# @since 2.5.0
314-
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = BSON::Config.validating_keys?)
319+
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = nil)
315320
buffer.put_byte(TYPE_BYTE)
316321
start = buffer.length
317322
buffer.put_int32(0) # hold for size
318323
buffer.put_cstring(value[:identifier])
319324
value[:sequence].each do |document|
320-
Document.serialize(buffer, document, max_bson_size, validating_keys)
325+
Document.serialize(buffer, document, max_bson_size)
321326
end
322327
buffer.replace_int32(start, buffer.length - start)
323328
end
@@ -356,9 +361,9 @@ module Document
356361
# @param value [ Hash ] Document to serialize as BSON.
357362
#
358363
# @return [ String ] Buffer with serialized value.
359-
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = BSON::Config.validating_keys?)
364+
def self.serialize(buffer, value, max_bson_size = nil, validating_keys = nil)
360365
start_size = buffer.length
361-
value.to_bson(buffer, validating_keys)
366+
value.to_bson(buffer)
362367
serialized_size = buffer.length - start_size
363368
if max_bson_size && serialized_size > max_bson_size
364369
raise Error::MaxBSONSize,
@@ -401,11 +406,12 @@ module Byte
401406
# @param [ BSON::ByteBuffer ] buffer Buffer to receive the single byte.
402407
# @param [ String ] value The byte to write to the buffer.
403408
# @param [ true, false ] validating_keys Whether to validate keys.
409+
# This option is deprecated and will not be used. It will removed in version 3.0.
404410
#
405411
# @return [ BSON::ByteBuffer ] Buffer with serialized value.
406412
#
407413
# @since 2.5.0
408-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
414+
def self.serialize(buffer, value, validating_keys = nil)
409415
buffer.put_byte(value)
410416
end
411417

@@ -432,11 +438,12 @@ module Bytes
432438
# @param [ BSON::ByteBuffer ] buffer Buffer to receive the bytes.
433439
# @param [ String ] value The bytes to write to the buffer.
434440
# @param [ true, false ] validating_keys Whether to validate keys.
441+
# This option is deprecated and will not be used. It will removed in version 3.0.
435442
#
436443
# @return [ BSON::ByteBuffer ] Buffer with serialized value.
437444
#
438445
# @since 2.5.0
439-
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
446+
def self.serialize(buffer, value, validating_keys = nil)
440447
buffer.put_bytes(value)
441448
end
442449

spec/mongo/protocol/caching_hash_spec.rb

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -34,50 +34,4 @@
3434
end
3535
end
3636
end
37-
38-
describe "#needs_validation?" do
39-
max_bson_version "4.99.99"
40-
41-
before do
42-
hash.to_bson(BSON::ByteBuffer.new, validation)
43-
end
44-
45-
let(:needs_validation?) do
46-
hash.send(:needs_validation?, validating_keys)
47-
end
48-
49-
context "when calling to_bson without validation" do
50-
let(:validation) { false }
51-
52-
context "validating_keys is true" do
53-
let(:validating_keys) { true }
54-
55-
it "is true" do
56-
expect(needs_validation?).to be true
57-
end
58-
end
59-
60-
context "validating_keys is false" do
61-
let(:validating_keys) { false }
62-
63-
it "is false" do
64-
expect(needs_validation?).to be false
65-
end
66-
end
67-
end
68-
69-
context "when calling to_bson with validation" do
70-
let(:validation) { true }
71-
72-
[true, false].each do |b|
73-
context "validating_keys is #{b}" do
74-
let(:validating_keys) { b }
75-
76-
it "is false" do
77-
expect(needs_validation?).to be false
78-
end
79-
end
80-
end
81-
end
82-
end
8337
end

spec/mongo/protocol/msg_spec.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -404,10 +404,8 @@
404404
{ validating_keys: true }
405405
end
406406

407-
it 'checks the sequence document keys' do
408-
expect {
409-
message.serialize
410-
}.to raise_exception(BSON::String::IllegalKey)
407+
it 'does not check the sequence document keys' do
408+
expect(message.serialize).to be_a(BSON::ByteBuffer)
411409
end
412410
end
413411

0 commit comments

Comments
 (0)