protobuf 2.4.7 → 2.4.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,27 @@ module Protobuf
22
22
  bytes
23
23
  end
24
24
 
25
+ def define_setter
26
+ field = self
27
+ @message_class.class_eval do
28
+ define_method(field.setter_method_name) do |val|
29
+ begin
30
+ field.warn_if_deprecated
31
+
32
+ if val.nil?
33
+ @values.delete(field.name)
34
+ elsif field.acceptable?(val)
35
+ @values[field.name] = val.dup
36
+ else
37
+ raise TypeError, "unacceptable value #{val} for type #{field.type}"
38
+ end
39
+ rescue NoMethodError => ex
40
+ raise TypeError, "unacceptable value #{val} for type #{field.type} field #{field.name}"
41
+ end
42
+ end
43
+ end
44
+ end
45
+
25
46
  def encode(value)
26
47
  value = value.serialize_to_string if value.is_a?(::Protobuf::Message)
27
48
  value.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
@@ -5,27 +5,6 @@ module Protobuf
5
5
  class StringField < BytesField
6
6
  ENCODING = 'UTF-8'.freeze
7
7
 
8
- def define_setter
9
- field = self
10
- @message_class.class_eval do
11
- define_method(field.setter_method_name) do |val|
12
- begin
13
- field.warn_if_deprecated
14
-
15
- if val.nil? || val.empty?
16
- @values.delete(field.name)
17
- elsif field.acceptable?(val)
18
- @values[field.name] = val.dup
19
- else
20
- raise TypeError, "unacceptable value #{val} for type #{field.type}"
21
- end
22
- rescue NoMethodError => ex
23
- raise TypeError, "unacceptable value #{val} for type #{field.type} field #{field.name}"
24
- end
25
- end
26
- end
27
- end
28
-
29
8
  def encode(value)
30
9
  value.force_encoding(::Protobuf::Field::StringField::ENCODING)
31
10
  string_size = ::Protobuf::Field::VarintField.encode(value.size)
@@ -160,11 +160,11 @@ module Protobuf
160
160
 
161
161
  value = @values[field.name]
162
162
 
163
- if value.present? || [true, false].include?(value)
164
- yield(field, value)
165
- else
166
- # Only way you can get here is if you are required and not present
163
+ if value.nil?
164
+ # Only way you can get here is if you are required and nil
167
165
  raise ::Protobuf::SerializationError, "#{field.name} is required on #{field.message_class}"
166
+ else
167
+ yield(field, value)
168
168
  end
169
169
  end
170
170
  end
@@ -336,12 +336,7 @@ module Protobuf
336
336
  end
337
337
 
338
338
  def __field_must_be_serialized__?(field)
339
- field.required? || __field_value_is_present__?(field)
340
- end
341
-
342
- def __field_value_is_present__?(field)
343
- value = @values[field.name]
344
- !value.nil? && (value.present? || [true, false].include?(value))
339
+ field.required? || !@values[field.name].nil?
345
340
  end
346
341
 
347
342
  # Encode key and value, and write to +stream+.
@@ -147,7 +147,11 @@ module Protobuf
147
147
  # Request object for this rpc cycle. Not assignable.
148
148
  #
149
149
  def request
150
- @_request ||= rpcs[@rpc].request_type.new.parse_from_string(@request_bytes)
150
+ @_request ||= if @request_bytes.present?
151
+ rpcs[@rpc].request_type.new.parse_from_string(@request_bytes)
152
+ else
153
+ rpcs[@rpc].request_type.new
154
+ end
151
155
  rescue => e
152
156
  raise BadRequestProto, "Unable to parse request: #{e.message}"
153
157
  end
@@ -71,8 +71,10 @@ module Protobuf
71
71
  #
72
72
  def init_method
73
73
  method_name = outer_request.method_name.underscore.to_sym
74
+ request_proto = outer_request.has_field?(:request_proto) ? outer_request.request_proto : nil
75
+
74
76
  if service_klass.rpc_method?(method_name)
75
- self.service = service_klass.new(method_name, outer_request.request_proto)
77
+ self.service = service_klass.new(method_name, request_proto)
76
78
  self.callable_method = service.callable_rpc_method(method_name)
77
79
  self.definition = service.rpcs[method_name]
78
80
  else
@@ -1,4 +1,4 @@
1
1
  module Protobuf
2
- VERSION = '2.4.7'
2
+ VERSION = '2.4.8'
3
3
  PROTOC_VERSION = '2.4.1'
4
4
  end
@@ -36,7 +36,7 @@ module Protobuf
36
36
  #
37
37
  ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :service_name, 1)
38
38
  ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :method_name, 2)
39
- ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::BytesField, :request_proto, 3)
39
+ ::Protobuf::Socketrpc::Request.optional(::Protobuf::Field::BytesField, :request_proto, 3)
40
40
 
41
41
  ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::BytesField, :response_proto, 1)
42
42
  ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::StringField, :error, 2)
@@ -33,7 +33,7 @@ message Request {
33
33
  required string method_name = 2;
34
34
 
35
35
  // RPC request proto
36
- required bytes request_proto = 3;
36
+ optional bytes request_proto = 3;
37
37
  }
38
38
 
39
39
  message Response {
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.7
4
+ version: 2.4.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-18 00:00:00.000000000 Z
13
+ date: 2012-11-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -498,7 +498,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
498
498
  version: '0'
499
499
  segments:
500
500
  - 0
501
- hash: 1379767212789735468
501
+ hash: -3822315942507757741
502
502
  required_rubygems_version: !ruby/object:Gem::Requirement
503
503
  none: false
504
504
  requirements:
@@ -507,7 +507,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
507
507
  version: '0'
508
508
  segments:
509
509
  - 0
510
- hash: 1379767212789735468
510
+ hash: -3822315942507757741
511
511
  requirements: []
512
512
  rubyforge_project:
513
513
  rubygems_version: 1.8.24