protobuf 2.4.0 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -160,16 +160,24 @@ module Protobuf
160
160
 
161
161
  def each_field_for_serialization
162
162
  all_fields.each do |field|
163
- next unless has_field_or_required_field?(field)
163
+ next unless has_field?(field.name) || field.required?
164
164
 
165
- value = __send__(field.name)
166
- value.compact! if field.repeated?
165
+ value = @values[field.name]
167
166
 
168
- if value.present? || [true, false].include?(value)
169
- yield(field, value)
170
- else
171
- # Only way you can get here is if you are required and not present
172
- raise ::Protobuf::SerializationError, "#{field.name} is required on #{field.message_class}"
167
+ if field.repeated?
168
+ if !value.nil?
169
+ value.compact!
170
+ @values[field.name] = nil if value.empty?
171
+ end
172
+ end
173
+
174
+ if has_field?(field.name) || field.required?
175
+ if value.present? || [true, false].include?(value)
176
+ yield(field, value)
177
+ else
178
+ # Only way you can get here is if you are required and not present
179
+ raise ::Protobuf::SerializationError, "#{field.name} is required on #{field.message_class}"
180
+ end
173
181
  end
174
182
  end
175
183
  end
@@ -339,10 +347,6 @@ module Protobuf
339
347
  object
340
348
  end
341
349
 
342
- def has_field_or_required_field?(field)
343
- has_field?(field.name) || field.required?
344
- end
345
-
346
350
  # Encode key and value, and write to +stream+.
347
351
  def write_pair(stream, field, value)
348
352
  key = (field.tag << 3) | field.wire_type
@@ -1,4 +1,4 @@
1
1
  module Protobuf
2
- VERSION = '2.4.0'
2
+ VERSION = '2.4.1'
3
3
  PROTOC_VERSION = '2.4.1'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -499,7 +499,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
499
499
  version: '0'
500
500
  segments:
501
501
  - 0
502
- hash: 1889105763094487003
502
+ hash: -3853015087851664003
503
503
  required_rubygems_version: !ruby/object:Gem::Requirement
504
504
  none: false
505
505
  requirements:
@@ -508,7 +508,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
508
508
  version: '0'
509
509
  segments:
510
510
  - 0
511
- hash: 1889105763094487003
511
+ hash: -3853015087851664003
512
512
  requirements: []
513
513
  rubyforge_project:
514
514
  rubygems_version: 1.8.24