bson 4.8.2-java → 4.9.4-java
Sign up to get free protection for your applications and to get access to all the features.
- 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