bson 4.0.0.beta-java → 4.0.0-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6111b7a5d3785b63d89444ddd5cf6e686a8a17da
4
- data.tar.gz: ecbe32290134736b498ba719d60aaa23059039ae
3
+ metadata.gz: 3a437de13d570ec32baf67a6ab3219e57c339aa9
4
+ data.tar.gz: 953b083f6212afb23efbc2191d5d39001b989422
5
5
  SHA512:
6
- metadata.gz: e4c1f290674d55904de628351da900aa2ea94e1da17152409a7fa37fef0b9b8d79144397a19475bb9cc5f274253e707932fec49e033d731ca7aa5e6fa50d4ee9
7
- data.tar.gz: d0a6549648f3c5b376dd68826c8d87ebabc1001b9ab49bb1498f20cf616299eb7270f067ce4fcf6540dd5be7542c08ed479bc552d6b2734e8091ef1f3e0b3624
6
+ metadata.gz: 83a525d241bdc949077c03f258e420ac58c2a78319400359c8464e3571b21380446abad9b1811b04925817d29fe74d8c28907d7c975af01c07641f639beb7b37
7
+ data.tar.gz: c0b3be2540d637ded982aab96e6a0b7839a85159db4c5c13d8eeb5df9fc58f97061889d0540b8bc60e66977144535121a569f8a2d54a946e8b9eda008006b485
Binary file
data.tar.gz.sig CHANGED
Binary file
Binary file
@@ -132,7 +132,7 @@ module BSON
132
132
  def to_bson(buffer = ByteBuffer.new)
133
133
  position = buffer.length
134
134
  buffer.put_int32(0)
135
- buffer.put_byte(SUBTYPES.fetch(type))
135
+ buffer.put_byte(SUBTYPES[type])
136
136
  buffer.put_int32(data.bytesize) if type == :old
137
137
  buffer.put_bytes(data.force_encoding(BINARY))
138
138
  buffer.replace_int32(position, buffer.length - position - 5)
@@ -74,9 +74,11 @@ module BSON
74
74
  # @example Test if a key exists using a symbol
75
75
  # document.has_key?(:test)
76
76
  #
77
+ # @param [ Object ] key The key to check for.
78
+ #
77
79
  # @return [ true, false]
78
80
  #
79
- # @since 3.2.7
81
+ # @since 4.0.0
80
82
  def has_key?(key)
81
83
  super(convert_key(key))
82
84
  end
@@ -85,22 +87,41 @@ module BSON
85
87
  alias :key? :has_key?
86
88
  alias :member? :has_key?
87
89
 
88
-
89
90
  # Returns true if the given value is present in the document. Will normalize
90
91
  # symbols into strings.
91
92
  #
92
93
  # @example Test if a key exists using a symbol
93
94
  # document.has_value?(:test)
94
95
  #
96
+ # @param [ Object ] value THe value to check for.
97
+ #
95
98
  # @return [ true, false]
96
99
  #
97
- # @since 3.2.7
100
+ # @since 4.0.0
98
101
  def has_value?(value)
99
102
  super(convert_value(value))
100
103
  end
101
104
 
102
105
  alias :value :has_value?
103
106
 
107
+ # Deletes the key-value pair and returns the value from the document
108
+ # whose key is equal to key.
109
+ # If the key is not found, returns the default value. If the optional code
110
+ # block is given and the key is not found, pass in the key and return the
111
+ # result of block.
112
+ #
113
+ # @example Delete a key-value pair
114
+ # document.delete(:test)
115
+ #
116
+ # @param [ Object ] key The key of the key-value pair to delete.
117
+ #
118
+ # @return [ Object ]
119
+ #
120
+ # @since 4.0.0
121
+ def delete(key, &block)
122
+ super(convert_key(key), &block)
123
+ end
124
+
104
125
  # Instantiate a new Document. Valid parameters for instantiation is a hash
105
126
  # only or nothing.
106
127
  #
@@ -74,7 +74,7 @@ module BSON
74
74
  # @since 2.0.0
75
75
  def from_bson(buffer)
76
76
  hash = Document.allocate
77
- buffer.get_int32 # Throw away the size - todo: just move read position?
77
+ buffer.get_int32 # Throw away the size.
78
78
  while (type = buffer.get_byte) != NULL_BYTE
79
79
  field = buffer.get_cstring
80
80
  hash.store(field, BSON::Registry.get(type).from_bson(buffer))
@@ -145,8 +145,8 @@ module BSON
145
145
  encoded << ((self >> 56) & 255)
146
146
  end
147
147
 
148
- def to_bson_key(buffer = ByteBuffer.new)
149
- buffer.put_cstring(to_s)
148
+ def to_bson_key
149
+ to_s
150
150
  end
151
151
 
152
152
  private
@@ -161,7 +161,6 @@ module BSON
161
161
  def out_of_range!
162
162
  raise RangeError.new("#{self} is not a valid 8 byte integer value.")
163
163
  end
164
-
165
164
  end
166
165
 
167
166
  # Enrich the core Integer class with this module.
@@ -40,7 +40,7 @@ module BSON
40
40
  #
41
41
  # @since 2.0.0
42
42
  def get(byte)
43
- MAPPINGS.fetch(byte)
43
+ MAPPINGS[byte]
44
44
  end
45
45
 
46
46
  # Register the Ruby type for the corresponding single byte.
@@ -30,6 +30,22 @@ module BSON
30
30
  # @since 2.0.0
31
31
  BSON_TYPE = 14.chr.force_encoding(BINARY).freeze
32
32
 
33
+ # Symbols are serialized as strings as symbols are now removed from the
34
+ # BSON specification. Therefore the bson_type when serializing must be a
35
+ # string.
36
+ #
37
+ # @example Get the BSON type for the symbol.
38
+ # :test.bson_type
39
+ #
40
+ # @return [ String ] The single byte BSON type.
41
+ #
42
+ # @see http://bsonspec.org/#/specification
43
+ #
44
+ # @since 4.0.0
45
+ def bson_type
46
+ String::BSON_TYPE
47
+ end
48
+
33
49
  # Get the symbol as encoded BSON.
34
50
  #
35
51
  # @example Get the symbol as encoded BSON.
@@ -89,7 +105,7 @@ module BSON
89
105
  # Register this type when the module is loaded.
90
106
  #
91
107
  # @since 2.0.0
92
- Registry.register(BSON_TYPE, ::Symbol)
108
+ Registry::MAPPINGS.store(BSON_TYPE, ::Symbol)
93
109
  end
94
110
 
95
111
  # Enrich the core Symbol class with this module.
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module BSON
16
- VERSION = "4.0.0.beta"
16
+ VERSION = "4.0.0"
17
17
  end
Binary file
@@ -98,33 +98,61 @@ describe BSON::Document do
98
98
 
99
99
  describe "#delete" do
100
100
 
101
- let(:key) { "white" }
102
- let(:val) { "ffffff" }
103
- let(:bad_key) { "black" }
101
+ shared_examples_for "a document with deletable pairs" do
104
102
 
105
- before do
106
- doc[key] = val
107
- end
103
+ let!(:deleted) { doc.delete(key) }
104
+
105
+ it "returns the deleted value" do
106
+ expect(deleted).to eq(val)
107
+ end
108
108
 
109
- let!(:deleted) { doc.delete(key) }
109
+ it "removes the key from the list" do
110
+ expect(doc.keys.length).to eq(keys.length)
111
+ end
110
112
 
111
- it "returns the deleted value" do
112
- expect(deleted).to eq(val)
113
- end
113
+ it "matches the keys length to the document length" do
114
+ expect(doc.length).to eq(doc.keys.length)
115
+ end
114
116
 
115
- it "removes the key from the list" do
116
- expect(doc.keys.length).to eq(keys.length)
117
+ context "when removing a bad key" do
118
+
119
+ it "returns nil" do
120
+ expect(doc.delete(bad_key)).to be_nil
121
+ end
122
+
123
+ context "when a block is provided" do
124
+
125
+ it "returns the result of the block" do
126
+ expect(doc.delete(bad_key) { |k| "golden key" }).to eq("golden key")
127
+ end
128
+ end
129
+ end
117
130
  end
118
131
 
119
- it "matches the keys length to the document length" do
120
- expect(doc.length).to eq(doc.keys.length)
132
+ context "when keys are strings" do
133
+
134
+ let(:key) { "white" }
135
+ let(:val) { "ffffff" }
136
+ let(:bad_key) { "black" }
137
+
138
+ before do
139
+ doc[key] = val
140
+ end
141
+
142
+ it_behaves_like "a document with deletable pairs"
121
143
  end
122
144
 
123
- context "when removind a bad key" do
145
+ context "when keys are symbols" do
146
+
147
+ let(:key) { :white }
148
+ let(:val) { "ffffff" }
149
+ let(:bad_key) { :black }
124
150
 
125
- it "returns nil" do
126
- expect(doc.delete(bad_key)).to be_nil
151
+ before do
152
+ doc[key] = val
127
153
  end
154
+
155
+ it_behaves_like "a document with deletable pairs"
128
156
  end
129
157
  end
130
158
 
@@ -812,15 +840,6 @@ describe BSON::Document do
812
840
  end
813
841
  end
814
842
 
815
- context "when the symbols are utf-8" do
816
-
817
- let(:document) do
818
- described_class["type", "gültig".to_sym]
819
- end
820
-
821
- it_behaves_like "a document able to handle utf-8"
822
- end
823
-
824
843
  context "when utf-8 string values are in an array" do
825
844
 
826
845
  let(:document) do
@@ -868,7 +887,7 @@ describe BSON::Document do
868
887
  end
869
888
  end
870
889
 
871
- context "when binary strings with utf-8 values exist", if: BSON::Environment.jruby? && !(ENV['RUBY_VERSION'] =~ /jruby-9/) do
890
+ context "when binary strings with utf-8 values exist", if: BSON::Environment.jruby? && (JRUBY_VERSION !~ /9.0/) do
872
891
 
873
892
  let(:string) { "europäisch" }
874
893
  let(:document) do
@@ -37,6 +37,21 @@ describe Hash do
37
37
  it_behaves_like "a deserializable bson element"
38
38
  end
39
39
 
40
+ context "when the hash has non-string keys" do
41
+
42
+ let(:obj) do
43
+ { 1 => "value" }
44
+ end
45
+
46
+ let(:expected) do
47
+ { "1" => "value" }
48
+ end
49
+
50
+ it "properly converts to bson" do
51
+ expect(BSON::Document.from_bson(BSON::ByteBuffer.new(obj.to_bson.to_s))).to eq(expected)
52
+ end
53
+ end
54
+
40
55
  context "when the hash is embedded" do
41
56
 
42
57
  let(:obj) do
@@ -62,10 +62,10 @@ describe Integer do
62
62
  describe "#to_bson_key" do
63
63
 
64
64
  let(:obj) { Integer::MAX_32BIT - 1 }
65
- let(:encoded) { obj.to_s + BSON::NULL_BYTE }
65
+ let(:encoded) { obj.to_s }
66
66
 
67
- it "returns the encoded string" do
68
- expect(obj.to_bson_key.to_s).to eq(encoded)
67
+ it "returns the key as a string" do
68
+ expect(obj.to_bson_key).to eq(encoded)
69
69
  end
70
70
  end
71
71
  end
@@ -35,10 +35,8 @@ describe BSON::Registry do
35
35
 
36
36
  context "when the type has no corresponding class" do
37
37
 
38
- it "raises an error" do
39
- expect {
40
- described_class.get("test")
41
- }.to raise_error(KeyError)
38
+ it "returns nil" do
39
+ expect(described_class.get("test")).to be_nil
42
40
  end
43
41
  end
44
42
  end
@@ -16,16 +16,22 @@ require "spec_helper"
16
16
 
17
17
  describe Symbol do
18
18
 
19
+ describe "#bson_type" do
20
+
21
+ it "returns the type for a string" do
22
+ expect(:type.bson_type).to eq("type".bson_type)
23
+ end
24
+ end
25
+
19
26
  describe "#to_bson/#from_bson" do
20
27
 
21
- let(:type) { 14.chr }
28
+ let(:type) { 2.chr }
22
29
  let(:obj) { :test }
23
30
  let(:bson) { "#{5.to_bson.to_s}test#{BSON::NULL_BYTE}" }
24
31
 
25
32
  it_behaves_like "a bson element"
26
33
  it_behaves_like "a serializable bson element"
27
34
  it_behaves_like "a deserializable bson element"
28
-
29
35
  end
30
36
 
31
37
  describe "#to_bson_key" do
@@ -15,15 +15,6 @@
15
15
  $LOAD_PATH.unshift(File.dirname(__FILE__))
16
16
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
17
17
 
18
- if ENV["CI"] && !ENV["WITH_EXT"]
19
- require "simplecov"
20
- require "coveralls"
21
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
22
- SimpleCov.start do
23
- add_filter "spec"
24
- end
25
- end
26
-
27
18
  require "bson"
28
19
  require "json"
29
20
  require "rspec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bson
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.beta
4
+ version: 4.0.0
5
5
  platform: java
6
6
  authors:
7
7
  - Tyler Brock
@@ -34,7 +34,7 @@ cert_chain:
34
34
  XZOS48LlWh15EG4yZo/gRzqNAW2LUIkYA5eMS2Kp6r+KV8IBUO/LaHdrXbdilpa8
35
35
  BRsuCo7UZDbFVRns04HLyjVvkj+K/ywIcdKdS0csz5M=
36
36
  -----END CERTIFICATE-----
37
- date: 2015-10-28 00:00:00.000000000 Z
37
+ date: 2015-12-07 00:00:00.000000000 Z
38
38
  dependencies: []
39
39
  description: A full featured BSON specification implementation, in Ruby
40
40
  email:
@@ -82,6 +82,7 @@ files:
82
82
  - lib/bson/true_class.rb
83
83
  - lib/bson/undefined.rb
84
84
  - lib/bson/version.rb
85
+ - lib/native.bundle
85
86
  - spec/bson/array_spec.rb
86
87
  - spec/bson/binary_spec.rb
87
88
  - spec/bson/boolean_spec.rb
@@ -124,17 +125,17 @@ require_paths:
124
125
  - lib
125
126
  required_ruby_version: !ruby/object:Gem::Requirement
126
127
  requirements:
127
- - - '>='
128
+ - - ">="
128
129
  - !ruby/object:Gem::Version
129
130
  version: 1.9.3
130
131
  required_rubygems_version: !ruby/object:Gem::Requirement
131
132
  requirements:
132
- - - '>='
133
+ - - ">="
133
134
  - !ruby/object:Gem::Version
134
135
  version: 1.3.6
135
136
  requirements: []
136
137
  rubyforge_project: bson
137
- rubygems_version: 2.4.5
138
+ rubygems_version: 2.4.8
138
139
  signing_key:
139
140
  specification_version: 4
140
141
  summary: Ruby Implementation of the BSON specification
metadata.gz.sig CHANGED
Binary file