bson 4.8.2-java → 4.9.4-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +18 -6
- data/lib/bson-ruby.jar +0 -0
- data/lib/bson.rb +1 -1
- data/lib/bson/active_support.rb +1 -1
- data/lib/bson/array.rb +10 -2
- data/lib/bson/binary.rb +1 -1
- data/lib/bson/boolean.rb +9 -2
- data/lib/bson/code.rb +1 -1
- data/lib/bson/code_with_scope.rb +9 -2
- data/lib/bson/config.rb +1 -1
- data/lib/bson/date.rb +1 -1
- data/lib/bson/date_time.rb +1 -1
- data/lib/bson/decimal128.rb +1 -1
- data/lib/bson/decimal128/builder.rb +1 -1
- data/lib/bson/document.rb +1 -1
- data/lib/bson/environment.rb +2 -1
- data/lib/bson/error.rb +10 -0
- data/lib/bson/ext_json.rb +1 -1
- data/lib/bson/false_class.rb +1 -1
- data/lib/bson/float.rb +1 -1
- data/lib/bson/hash.rb +10 -2
- data/lib/bson/int32.rb +1 -1
- data/lib/bson/int64.rb +1 -1
- data/lib/bson/integer.rb +1 -1
- data/lib/bson/json.rb +1 -1
- data/lib/bson/max_key.rb +1 -1
- data/lib/bson/min_key.rb +1 -1
- data/lib/bson/nil_class.rb +1 -1
- data/lib/bson/object.rb +1 -1
- data/lib/bson/object_id.rb +1 -1
- data/lib/bson/open_struct.rb +1 -1
- data/lib/bson/regexp.rb +8 -2
- data/lib/bson/registry.rb +1 -1
- data/lib/bson/specialized.rb +1 -1
- data/lib/bson/string.rb +1 -1
- data/lib/bson/symbol.rb +1 -1
- data/lib/bson/time.rb +1 -1
- data/lib/bson/time_with_zone.rb +1 -1
- data/lib/bson/timestamp.rb +1 -1
- data/lib/bson/true_class.rb +1 -1
- data/lib/bson/undefined.rb +1 -1
- data/lib/bson/version.rb +2 -2
- data/spec/bson/array_spec.rb +18 -1
- data/spec/bson/binary_spec.rb +1 -1
- data/spec/bson/binary_uuid_spec.rb +1 -1
- data/spec/bson/boolean_spec.rb +1 -1
- data/spec/bson/code_spec.rb +1 -1
- data/spec/bson/code_with_scope_spec.rb +1 -1
- data/spec/bson/date_spec.rb +1 -1
- data/spec/bson/date_time_spec.rb +1 -1
- data/spec/bson/decimal128_spec.rb +1 -1
- data/spec/bson/document_spec.rb +1 -1
- data/spec/bson/false_class_spec.rb +1 -1
- data/spec/bson/float_spec.rb +1 -1
- data/spec/bson/hash_spec.rb +18 -1
- data/spec/bson/int32_spec.rb +1 -1
- data/spec/bson/int64_spec.rb +1 -1
- data/spec/bson/integer_spec.rb +1 -1
- data/spec/bson/json_spec.rb +1 -1
- data/spec/bson/max_key_spec.rb +1 -1
- data/spec/bson/min_key_spec.rb +1 -1
- data/spec/bson/nil_class_spec.rb +1 -1
- data/spec/bson/object_id_spec.rb +1 -1
- data/spec/bson/object_spec.rb +1 -1
- data/spec/bson/open_struct_spec.rb +1 -1
- data/spec/bson/raw_spec.rb +12 -1
- data/spec/bson/regexp_spec.rb +1 -1
- data/spec/bson/registry_spec.rb +1 -1
- data/spec/bson/string_spec.rb +1 -1
- data/spec/bson/symbol_spec.rb +1 -1
- data/spec/bson/time_spec.rb +1 -1
- data/spec/bson/time_with_zone_spec.rb +1 -1
- data/spec/bson/timestamp_spec.rb +1 -1
- data/spec/bson/true_class_spec.rb +1 -1
- data/spec/bson/undefined_spec.rb +1 -1
- data/spec/bson_spec.rb +1 -1
- data/spec/runners/common_driver.rb +1 -1
- data/spec/runners/corpus.rb +13 -10
- data/spec/runners/corpus_legacy.rb +1 -1
- data/spec/spec_helper.rb +12 -1
- data/spec/spec_tests/data/corpus/top.json +0 -4
- data/spec/support/shared_examples.rb +1 -1
- data/spec/support/spec_config.rb +6 -0
- metadata +90 -93
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eedbe4346e9f1ededbe02d7ce67e4e078c415caaa4b5e17fc1504a194ea48b3b
|
|
4
|
+
data.tar.gz: 0c3dbcdc8aa4593631b43e8df5db90b12fbf63ec5b3bcd85388f5c440a939eeb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cd040870d55f7e7021ebe5d89a8737fe877f21bbfd8d96893d4c7972c312bedded6c787d67fe4647e241be84966ef9749de13b259416bbe9622ecc2de883a5a6
|
|
7
|
+
data.tar.gz: 7d595857065631624cf580220d8b0c83590e050a6c0bdfd420a886a18fac8ceb1a54702521aab6f3352d2de341e39059ea0ac372ebed7a7b410b80207e8445ff
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
BSON
|
|
2
|
-
[![
|
|
3
|
-
[![
|
|
4
|
-
[![
|
|
5
|
-
[![
|
|
1
|
+
BSON
|
|
2
|
+
[![Gem Version][rubygems-img]][rubygems-url]
|
|
3
|
+
[![Build Status][travis-img]][travis-url]
|
|
4
|
+
[![Build status Windows][appveyor-img]][appveyor-url]
|
|
5
|
+
[![Coverage Status][coveralls-img]][coveralls-url]
|
|
6
|
+
[![Inline docs][inch-img]][inch-url]
|
|
6
7
|
====
|
|
7
8
|
|
|
8
9
|
An implementation of the BSON specification in Ruby.
|
|
@@ -38,7 +39,7 @@ As of 2.0.0, this project adheres to the
|
|
|
38
39
|
License
|
|
39
40
|
-------
|
|
40
41
|
|
|
41
|
-
Copyright (C) 2009-
|
|
42
|
+
Copyright (C) 2009-2020 MongoDB Inc.
|
|
42
43
|
|
|
43
44
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
44
45
|
you may not use this file except in compliance with the License.
|
|
@@ -51,3 +52,14 @@ distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
51
52
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
52
53
|
See the License for the specific language governing permissions and
|
|
53
54
|
limitations under the License.
|
|
55
|
+
|
|
56
|
+
[rubygems-img]: https://badge.fury.io/rb/bson.svg
|
|
57
|
+
[rubygems-url]: http://badge.fury.io/rb/bson
|
|
58
|
+
[travis-img]: https://secure.travis-ci.org/mongodb/bson-ruby.svg?branch=master
|
|
59
|
+
[travis-url]: http://travis-ci.org/mongodb/bson-ruby
|
|
60
|
+
[appveyor-img]: https://ci.appveyor.com/api/projects/status/p5aqko7umsx351nm?svg=true
|
|
61
|
+
[appveyor-url]: https://ci.appveyor.com/project/p-mongo/bson-ruby/branch/master
|
|
62
|
+
[coveralls-img]: https://coveralls.io/repos/mongodb/bson-ruby/badge.svg?branch=master
|
|
63
|
+
[coveralls-url]: https://coveralls.io/r/mongodb/bson-ruby?branch=master
|
|
64
|
+
[inch-img]: http://inch-ci.org/github/mongodb/bson-ruby.svg?branch=master
|
|
65
|
+
[inch-url]: http://inch-ci.org/github/mongodb/bson-ruby
|
data/lib/bson-ruby.jar
CHANGED
|
Binary file
|
data/lib/bson.rb
CHANGED
data/lib/bson/active_support.rb
CHANGED
data/lib/bson/array.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2009-
|
|
1
|
+
# Copyright (C) 2009-2020 MongoDB Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -47,6 +47,9 @@ module BSON
|
|
|
47
47
|
position = buffer.length
|
|
48
48
|
buffer.put_int32(0)
|
|
49
49
|
each_with_index do |value, index|
|
|
50
|
+
unless value.respond_to?(:bson_type)
|
|
51
|
+
raise Error::UnserializableClass, "Array element at position #{index} does not define its BSON serialized type: #{value}"
|
|
52
|
+
end
|
|
50
53
|
buffer.put_byte(value.bson_type)
|
|
51
54
|
buffer.put_cstring(index.to_s)
|
|
52
55
|
value.to_bson(buffer, validating_keys)
|
|
@@ -119,7 +122,8 @@ module BSON
|
|
|
119
122
|
buffer.get_array(**options)
|
|
120
123
|
else
|
|
121
124
|
array = new
|
|
122
|
-
buffer.
|
|
125
|
+
start_position = buffer.read_position
|
|
126
|
+
expected_byte_size = buffer.get_int32
|
|
123
127
|
while (type = buffer.get_byte) != NULL_BYTE
|
|
124
128
|
buffer.get_cstring
|
|
125
129
|
cls = BSON::Registry.get(type)
|
|
@@ -130,6 +134,10 @@ module BSON
|
|
|
130
134
|
end
|
|
131
135
|
array << value
|
|
132
136
|
end
|
|
137
|
+
actual_byte_size = buffer.read_position - start_position
|
|
138
|
+
if actual_byte_size != expected_byte_size
|
|
139
|
+
raise Error::BSONDecodeError, "Expected array to take #{expected_byte_size} bytes but it took #{actual_byte_size} bytes"
|
|
140
|
+
end
|
|
133
141
|
array
|
|
134
142
|
end
|
|
135
143
|
end
|
data/lib/bson/binary.rb
CHANGED
data/lib/bson/boolean.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2009-
|
|
1
|
+
# Copyright (C) 2009-2020 MongoDB Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -39,7 +39,14 @@ module BSON
|
|
|
39
39
|
#
|
|
40
40
|
# @since 2.0.0
|
|
41
41
|
def self.from_bson(buffer, **options)
|
|
42
|
-
buffer.get_byte
|
|
42
|
+
case v = buffer.get_byte
|
|
43
|
+
when TrueClass::TRUE_BYTE
|
|
44
|
+
true
|
|
45
|
+
when FalseClass::FALSE_BYTE
|
|
46
|
+
false
|
|
47
|
+
else
|
|
48
|
+
raise Error::BSONDecodeError, "Invalid boolean byte value: #{v}"
|
|
49
|
+
end
|
|
43
50
|
end
|
|
44
51
|
|
|
45
52
|
# Register this type when the module is loaded.
|
data/lib/bson/code.rb
CHANGED
data/lib/bson/code_with_scope.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2009-
|
|
1
|
+
# Copyright (C) 2009-2020 MongoDB Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -119,13 +119,20 @@ module BSON
|
|
|
119
119
|
#
|
|
120
120
|
# @since 2.0.0
|
|
121
121
|
def self.from_bson(buffer, **options)
|
|
122
|
-
|
|
122
|
+
# Code with scope has a length (?) field which is not needed for
|
|
123
|
+
# decoding, but spec tests want this field validated.
|
|
124
|
+
start_position = buffer.read_position
|
|
125
|
+
length = buffer.get_int32
|
|
123
126
|
javascript = buffer.get_string
|
|
124
127
|
scope = if options.empty?
|
|
125
128
|
::Hash.from_bson(buffer)
|
|
126
129
|
else
|
|
127
130
|
::Hash.from_bson(buffer, **options)
|
|
128
131
|
end
|
|
132
|
+
read_bytes = buffer.read_position - start_position
|
|
133
|
+
if read_bytes != length
|
|
134
|
+
raise Error::BSONDecodeError, "CodeWithScope invalid: claimed length #{length}, actual length #{read_bytes}"
|
|
135
|
+
end
|
|
129
136
|
new(javascript, scope)
|
|
130
137
|
end
|
|
131
138
|
|
data/lib/bson/config.rb
CHANGED
data/lib/bson/date.rb
CHANGED
data/lib/bson/date_time.rb
CHANGED
data/lib/bson/decimal128.rb
CHANGED
data/lib/bson/document.rb
CHANGED
data/lib/bson/environment.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2009-
|
|
1
|
+
# Copyright (C) 2009-2020 MongoDB Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -41,6 +41,7 @@ module BSON
|
|
|
41
41
|
# @return [ true, false ] If the Ruby version is 1.9.
|
|
42
42
|
#
|
|
43
43
|
# @since 4.2.0
|
|
44
|
+
# @deprecated
|
|
44
45
|
def ruby_1_9?
|
|
45
46
|
@ruby_1_9 ||= RUBY_VERSION < '2.0.0'
|
|
46
47
|
end
|
data/lib/bson/error.rb
CHANGED
|
@@ -13,5 +13,15 @@ module BSON
|
|
|
13
13
|
# unsupported binary subtype.
|
|
14
14
|
class UnsupportedBinarySubtype < Error
|
|
15
15
|
end
|
|
16
|
+
|
|
17
|
+
# Exception raised when BSON decoding fails.
|
|
18
|
+
class BSONDecodeError < Error
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Exception raised when serializing an Array or Hash to BSON and an
|
|
22
|
+
# array or hash element is of a class that does not define how to serialize
|
|
23
|
+
# itself to BSON.
|
|
24
|
+
class UnserializableClass < Error
|
|
25
|
+
end
|
|
16
26
|
end
|
|
17
27
|
end
|
data/lib/bson/ext_json.rb
CHANGED
data/lib/bson/false_class.rb
CHANGED
data/lib/bson/float.rb
CHANGED
data/lib/bson/hash.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2009-
|
|
1
|
+
# Copyright (C) 2009-2020 MongoDB Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -44,6 +44,9 @@ module BSON
|
|
|
44
44
|
position = buffer.length
|
|
45
45
|
buffer.put_int32(0)
|
|
46
46
|
each do |field, value|
|
|
47
|
+
unless value.respond_to?(:bson_type)
|
|
48
|
+
raise Error::UnserializableClass, "Hash value for key '#{field}' does not define its BSON serialized type: #{value}"
|
|
49
|
+
end
|
|
47
50
|
buffer.put_byte(value.bson_type)
|
|
48
51
|
key = field.to_bson_key(validating_keys)
|
|
49
52
|
begin
|
|
@@ -108,7 +111,8 @@ module BSON
|
|
|
108
111
|
buffer.get_hash(**options)
|
|
109
112
|
else
|
|
110
113
|
hash = Document.allocate
|
|
111
|
-
|
|
114
|
+
start_position = buffer.read_position
|
|
115
|
+
expected_byte_size = buffer.get_int32
|
|
112
116
|
while (type = buffer.get_byte) != NULL_BYTE
|
|
113
117
|
field = buffer.get_cstring
|
|
114
118
|
cls = BSON::Registry.get(type, field)
|
|
@@ -121,6 +125,10 @@ module BSON
|
|
|
121
125
|
end
|
|
122
126
|
hash.store(field, value)
|
|
123
127
|
end
|
|
128
|
+
actual_byte_size = buffer.read_position - start_position
|
|
129
|
+
if actual_byte_size != expected_byte_size
|
|
130
|
+
raise Error::BSONDecodeError, "Expected hash to take #{expected_byte_size} bytes but it took #{actual_byte_size} bytes"
|
|
131
|
+
end
|
|
124
132
|
hash
|
|
125
133
|
end
|
|
126
134
|
end
|
data/lib/bson/int32.rb
CHANGED
data/lib/bson/int64.rb
CHANGED
data/lib/bson/integer.rb
CHANGED
data/lib/bson/json.rb
CHANGED
data/lib/bson/max_key.rb
CHANGED
data/lib/bson/min_key.rb
CHANGED
data/lib/bson/nil_class.rb
CHANGED
data/lib/bson/object.rb
CHANGED
data/lib/bson/object_id.rb
CHANGED
data/lib/bson/open_struct.rb
CHANGED
data/lib/bson/regexp.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2009-
|
|
1
|
+
# Copyright (C) 2009-2020 MongoDB Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -165,7 +165,13 @@ module BSON
|
|
|
165
165
|
#
|
|
166
166
|
# @since 3.1.0
|
|
167
167
|
def respond_to?(method, include_private = false)
|
|
168
|
-
|
|
168
|
+
if defined?(@pattern)
|
|
169
|
+
compile.respond_to?(method, include_private) || super
|
|
170
|
+
else
|
|
171
|
+
# YAML calls #respond_to? during deserialization, before the object
|
|
172
|
+
# is initialized.
|
|
173
|
+
super
|
|
174
|
+
end
|
|
169
175
|
end
|
|
170
176
|
|
|
171
177
|
# Encode the Raw Regexp object to BSON.
|
data/lib/bson/registry.rb
CHANGED
data/lib/bson/specialized.rb
CHANGED
data/lib/bson/string.rb
CHANGED
data/lib/bson/symbol.rb
CHANGED
data/lib/bson/time.rb
CHANGED
data/lib/bson/time_with_zone.rb
CHANGED
data/lib/bson/timestamp.rb
CHANGED
data/lib/bson/true_class.rb
CHANGED