protobuf 3.3.6 → 3.4.0
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 +7 -0
- data/.rubocop.yml +48 -0
- data/.rubocop_todo.yml +79 -0
- data/.travis.yml +12 -4
- data/Rakefile +14 -11
- data/bin/protoc-gen-ruby +0 -1
- data/bin/rpc_server +1 -0
- data/install-protobuf.sh +8 -0
- data/lib/protobuf.rb +30 -24
- data/lib/protobuf/cli.rb +35 -35
- data/lib/protobuf/code_generator.rb +11 -8
- data/lib/protobuf/decoder.rb +4 -5
- data/lib/protobuf/deprecation.rb +20 -0
- data/lib/protobuf/descriptors/google/protobuf/compiler/plugin.pb.rb +2 -0
- data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +2 -0
- data/lib/protobuf/encoder.rb +9 -4
- data/lib/protobuf/enum.rb +38 -54
- data/lib/protobuf/field.rb +2 -2
- data/lib/protobuf/field/base_field.rb +28 -32
- data/lib/protobuf/field/bool_field.rb +4 -4
- data/lib/protobuf/field/bytes_field.rb +5 -4
- data/lib/protobuf/field/double_field.rb +0 -1
- data/lib/protobuf/field/enum_field.rb +4 -7
- data/lib/protobuf/field/field_array.rb +3 -4
- data/lib/protobuf/field/fixed32_field.rb +1 -1
- data/lib/protobuf/field/fixed64_field.rb +0 -1
- data/lib/protobuf/field/float_field.rb +0 -1
- data/lib/protobuf/field/int32_field.rb +0 -1
- data/lib/protobuf/field/int64_field.rb +0 -1
- data/lib/protobuf/field/integer_field.rb +0 -1
- data/lib/protobuf/field/message_field.rb +2 -3
- data/lib/protobuf/field/sfixed32_field.rb +0 -1
- data/lib/protobuf/field/sfixed64_field.rb +0 -1
- data/lib/protobuf/field/signed_integer_field.rb +0 -1
- data/lib/protobuf/field/sint32_field.rb +0 -1
- data/lib/protobuf/field/sint64_field.rb +0 -1
- data/lib/protobuf/field/string_field.rb +0 -1
- data/lib/protobuf/field/uint32_field.rb +0 -1
- data/lib/protobuf/field/uint64_field.rb +0 -1
- data/lib/protobuf/field/varint_field.rb +0 -1
- data/lib/protobuf/generators/base.rb +1 -2
- data/lib/protobuf/generators/enum_generator.rb +1 -2
- data/lib/protobuf/generators/extension_generator.rb +1 -2
- data/lib/protobuf/generators/field_generator.rb +4 -5
- data/lib/protobuf/generators/file_generator.rb +22 -27
- data/lib/protobuf/generators/group_generator.rb +15 -16
- data/lib/protobuf/generators/message_generator.rb +13 -14
- data/lib/protobuf/generators/printable.rb +9 -10
- data/lib/protobuf/generators/service_generator.rb +1 -2
- data/lib/protobuf/lifecycle.rb +20 -33
- data/lib/protobuf/logging.rb +4 -6
- data/lib/protobuf/message.rb +22 -16
- data/lib/protobuf/message/fields.rb +14 -17
- data/lib/protobuf/message/serialization.rb +6 -5
- data/lib/protobuf/rpc/buffer.rb +10 -12
- data/lib/protobuf/rpc/client.rb +12 -12
- data/lib/protobuf/rpc/connectors/base.rb +4 -3
- data/lib/protobuf/rpc/connectors/common.rb +15 -17
- data/lib/protobuf/rpc/connectors/socket.rb +2 -2
- data/lib/protobuf/rpc/connectors/zmq.rb +118 -108
- data/lib/protobuf/rpc/dynamic_discovery.pb.rb +2 -0
- data/lib/protobuf/rpc/env.rb +12 -12
- data/lib/protobuf/rpc/error.rb +1 -1
- data/lib/protobuf/rpc/error/client_error.rb +4 -4
- data/lib/protobuf/rpc/error/server_error.rb +6 -6
- data/lib/protobuf/rpc/middleware/exception_handler.rb +1 -1
- data/lib/protobuf/rpc/middleware/logger.rb +3 -3
- data/lib/protobuf/rpc/middleware/request_decoder.rb +5 -5
- data/lib/protobuf/rpc/middleware/response_encoder.rb +3 -3
- data/lib/protobuf/rpc/rpc.pb.rb +2 -0
- data/lib/protobuf/rpc/servers/socket/server.rb +75 -65
- data/lib/protobuf/rpc/servers/socket/worker.rb +2 -2
- data/lib/protobuf/rpc/servers/socket_runner.rb +12 -6
- data/lib/protobuf/rpc/servers/zmq/broker.rb +10 -6
- data/lib/protobuf/rpc/servers/zmq/server.rb +20 -26
- data/lib/protobuf/rpc/servers/zmq/util.rb +7 -7
- data/lib/protobuf/rpc/servers/zmq/worker.rb +5 -7
- data/lib/protobuf/rpc/servers/zmq_runner.rb +14 -3
- data/lib/protobuf/rpc/service.rb +15 -15
- data/lib/protobuf/rpc/service_directory.rb +7 -11
- data/lib/protobuf/rpc/service_dispatcher.rb +3 -3
- data/lib/protobuf/rpc/service_filters.rb +27 -28
- data/lib/protobuf/rpc/stat.rb +4 -7
- data/lib/protobuf/socket.rb +0 -1
- data/lib/protobuf/tasks/compile.rake +2 -2
- data/lib/protobuf/version.rb +1 -1
- data/protobuf.gemspec +20 -4
- data/spec/benchmark/tasks.rb +49 -23
- data/spec/bin/protoc-gen-ruby_spec.rb +11 -6
- data/spec/encoding/all_types_spec.rb +91 -77
- data/spec/encoding/extreme_values_spec.rb +0 -0
- data/spec/functional/socket_server_spec.rb +9 -10
- data/spec/functional/zmq_server_spec.rb +21 -19
- data/spec/lib/protobuf/cli_spec.rb +20 -20
- data/spec/lib/protobuf/code_generator_spec.rb +6 -6
- data/spec/lib/protobuf/enum_spec.rb +57 -31
- data/spec/lib/protobuf/field/float_field_spec.rb +2 -2
- data/spec/lib/protobuf/field/int32_field_spec.rb +1 -1
- data/spec/lib/protobuf/field/string_field_spec.rb +7 -8
- data/spec/lib/protobuf/field_spec.rb +3 -6
- data/spec/lib/protobuf/generators/base_spec.rb +6 -6
- data/spec/lib/protobuf/generators/enum_generator_spec.rb +22 -17
- data/spec/lib/protobuf/generators/extension_generator_spec.rb +8 -9
- data/spec/lib/protobuf/generators/field_generator_spec.rb +14 -11
- data/spec/lib/protobuf/generators/file_generator_spec.rb +7 -4
- data/spec/lib/protobuf/generators/service_generator_spec.rb +14 -11
- data/spec/lib/protobuf/lifecycle_spec.rb +9 -4
- data/spec/lib/protobuf/message_spec.rb +63 -35
- data/spec/lib/protobuf/optionable_spec.rb +3 -3
- data/spec/lib/protobuf/rpc/client_spec.rb +2 -2
- data/spec/lib/protobuf/rpc/connector_spec.rb +1 -1
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +6 -6
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +26 -18
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +4 -4
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +11 -9
- data/spec/lib/protobuf/rpc/middleware/exception_handler_spec.rb +2 -2
- data/spec/lib/protobuf/rpc/middleware/logger_spec.rb +7 -7
- data/spec/lib/protobuf/rpc/middleware/request_decoder_spec.rb +14 -14
- data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +5 -5
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +1 -1
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +9 -7
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +9 -9
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +2 -2
- data/spec/lib/protobuf/rpc/service_directory_spec.rb +24 -23
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +4 -4
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +84 -51
- data/spec/lib/protobuf/rpc/service_spec.rb +15 -14
- data/spec/lib/protobuf/rpc/stat_spec.rb +1 -1
- data/spec/lib/protobuf_spec.rb +9 -9
- data/spec/spec_helper.rb +7 -19
- data/spec/support/server.rb +29 -59
- data/spec/support/test/defaults.pb.rb +2 -0
- data/spec/support/test/enum.pb.rb +2 -0
- data/spec/support/test/extended.pb.rb +2 -0
- data/spec/support/test/google_unittest_import.pb.rb +2 -0
- data/spec/support/test/google_unittest_import_public.pb.rb +2 -0
- data/spec/support/test/multi_field_extensions.pb.rb +2 -0
- data/spec/support/test/resource.pb.rb +2 -0
- data/spec/support/test/resource_service.rb +17 -20
- metadata +153 -112
- data/lib/protobuf/deprecator.rb +0 -42
@@ -6,7 +6,7 @@ module Protobuf
|
|
6
6
|
CodeGeneratorFatalError = Class.new(RuntimeError)
|
7
7
|
|
8
8
|
def self.fatal(message)
|
9
|
-
|
9
|
+
fail CodeGeneratorFatalError, message
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.print_tag_warning_suppress
|
@@ -18,24 +18,27 @@ module Protobuf
|
|
18
18
|
STDERR.puts("[WARN] #{message}")
|
19
19
|
end
|
20
20
|
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_accessor :request
|
24
|
+
|
25
|
+
public
|
26
|
+
|
21
27
|
def initialize(request_bytes)
|
22
|
-
|
23
|
-
@generated_files = []
|
28
|
+
self.request = ::Google::Protobuf::Compiler::CodeGeneratorRequest.decode(request_bytes)
|
24
29
|
end
|
25
30
|
|
26
31
|
def generate_file(file_descriptor)
|
27
|
-
|
28
|
-
@generated_files << file_generator.generate_output_file
|
32
|
+
::Protobuf::Generators::FileGenerator.new(file_descriptor).generate_output_file
|
29
33
|
end
|
30
34
|
|
31
35
|
def response_bytes
|
32
|
-
|
36
|
+
generated_files = request.proto_file.map do |file_descriptor|
|
33
37
|
generate_file(file_descriptor)
|
34
38
|
end
|
35
39
|
|
36
|
-
|
40
|
+
::Google::Protobuf::Compiler::CodeGeneratorResponse.encode(:file => generated_files)
|
37
41
|
end
|
38
42
|
|
39
43
|
end
|
40
44
|
end
|
41
|
-
|
data/lib/protobuf/decoder.rb
CHANGED
@@ -24,14 +24,14 @@ module Protobuf
|
|
24
24
|
when ::Protobuf::WireType::FIXED32 then
|
25
25
|
read_fixed32(stream)
|
26
26
|
when ::Protobuf::WireType::START_GROUP then
|
27
|
-
|
27
|
+
fail NotImplementedError, 'Group is deprecated.'
|
28
28
|
when ::Protobuf::WireType::END_GROUP then
|
29
|
-
|
29
|
+
fail NotImplementedError, 'Group is deprecated.'
|
30
30
|
else
|
31
|
-
|
31
|
+
fail InvalidWireType, wire_type
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
[tag, bytes]
|
35
35
|
end
|
36
36
|
|
37
37
|
# Read 32-bit string value from +stream+.
|
@@ -71,4 +71,3 @@ module Protobuf
|
|
71
71
|
|
72
72
|
end
|
73
73
|
end
|
74
|
-
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'active_support/deprecation'
|
2
|
+
|
3
|
+
module Protobuf
|
4
|
+
class Deprecation < ::ActiveSupport::Deprecation
|
5
|
+
def deprecate_methods(*args)
|
6
|
+
args.last.merge!(:deprecator => self) if args.last.is_a?(Hash)
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def define_deprecated_methods(target_module, method_hash)
|
11
|
+
target_module.module_eval do
|
12
|
+
method_hash.each do |old_method, new_method|
|
13
|
+
alias_method old_method, new_method
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
deprecate_methods(target_module, method_hash)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/protobuf/encoder.rb
CHANGED
@@ -5,15 +5,21 @@ module Protobuf
|
|
5
5
|
new(stream, message).encode
|
6
6
|
end
|
7
7
|
|
8
|
+
private
|
9
|
+
|
10
|
+
attr_writer :message, :stream
|
11
|
+
|
12
|
+
public
|
13
|
+
|
8
14
|
attr_reader :message, :stream
|
9
15
|
|
10
16
|
def initialize(message, stream)
|
11
17
|
unless message.respond_to?(:each_field_for_serialization)
|
12
|
-
|
18
|
+
fail ArgumentError, "Message instance must respond to :each_field_for_serialization"
|
13
19
|
end
|
14
20
|
|
15
|
-
|
16
|
-
|
21
|
+
self.message = message
|
22
|
+
self.stream = stream
|
17
23
|
end
|
18
24
|
|
19
25
|
def encode
|
@@ -59,4 +65,3 @@ module Protobuf
|
|
59
65
|
|
60
66
|
end
|
61
67
|
end
|
62
|
-
|
data/lib/protobuf/enum.rb
CHANGED
@@ -1,38 +1,20 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
require 'protobuf/optionable'
|
3
|
-
require 'protobuf/deprecator'
|
4
3
|
|
5
4
|
##
|
6
5
|
# Adding extension to Numeric until
|
7
6
|
# we can get people to stop calling #value
|
8
7
|
# on Enum instances.
|
9
8
|
#
|
10
|
-
|
11
|
-
unless method_defined?(:value)
|
12
|
-
def value
|
13
|
-
$stderr.puts <<-DEPRECATION
|
14
|
-
[DEPRECATED] Enum#value is deprecated and will be removed in the next release.
|
15
|
-
Use Enum#to_i instead.
|
16
|
-
DEPRECATION
|
17
|
-
self
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
9
|
+
::Protobuf.deprecator.define_deprecated_methods(Numeric, :value => :to_int)
|
21
10
|
|
22
11
|
module Protobuf
|
23
12
|
class Enum < SimpleDelegator
|
24
|
-
|
25
|
-
##
|
26
|
-
# Deprecations
|
27
|
-
#
|
28
|
-
|
29
|
-
extend ::Protobuf::Deprecator
|
30
|
-
|
31
13
|
# Public: Allows setting Options on the Enum class.
|
32
14
|
include ::Protobuf::Optionable
|
33
15
|
|
34
16
|
def self.aliases_allowed?
|
35
|
-
|
17
|
+
get_option(:allow_alias)
|
36
18
|
end
|
37
19
|
|
38
20
|
# Public: Get all integer tags defined by this enum.
|
@@ -51,7 +33,7 @@ module Protobuf
|
|
51
33
|
# Returns an array of unique integers.
|
52
34
|
#
|
53
35
|
def self.all_tags
|
54
|
-
@all_tags ||=
|
36
|
+
@all_tags ||= enums.map(&:to_i).uniq
|
55
37
|
end
|
56
38
|
|
57
39
|
# Internal: DSL method to create a new Enum. The given name will
|
@@ -70,7 +52,7 @@ module Protobuf
|
|
70
52
|
# Returns nothing.
|
71
53
|
#
|
72
54
|
def self.define(name, tag)
|
73
|
-
enum =
|
55
|
+
enum = new(self, name, tag)
|
74
56
|
@enums ||= []
|
75
57
|
@enums << enum
|
76
58
|
const_set(name, enum)
|
@@ -78,8 +60,8 @@ module Protobuf
|
|
78
60
|
|
79
61
|
# Public: All defined enums.
|
80
62
|
#
|
81
|
-
|
82
|
-
|
63
|
+
class << self
|
64
|
+
attr_reader :enums
|
83
65
|
end
|
84
66
|
|
85
67
|
# Public: Get an array of Enum objects with the given tag.
|
@@ -101,9 +83,9 @@ module Protobuf
|
|
101
83
|
# Returns an array with zero or more Enum objects or nil.
|
102
84
|
#
|
103
85
|
def self.enums_for_tag(tag)
|
104
|
-
|
86
|
+
enums.select do |enum|
|
105
87
|
enum.to_i == tag.to_i
|
106
|
-
|
88
|
+
end
|
107
89
|
end
|
108
90
|
|
109
91
|
# Public: Get the Enum associated with the given name.
|
@@ -125,7 +107,7 @@ module Protobuf
|
|
125
107
|
# Returns the Enum object with the given name or nil.
|
126
108
|
#
|
127
109
|
def self.enum_for_name(name)
|
128
|
-
|
110
|
+
const_get(name)
|
129
111
|
rescue ::NameError
|
130
112
|
nil
|
131
113
|
end
|
@@ -138,7 +120,7 @@ module Protobuf
|
|
138
120
|
# Enums, the first enum defined will be returned.
|
139
121
|
#
|
140
122
|
def self.enum_for_tag(tag)
|
141
|
-
|
123
|
+
enums_for_tag(tag).first
|
142
124
|
end
|
143
125
|
|
144
126
|
# Public: Get an Enum by a variety of type-checking mechanisms.
|
@@ -206,7 +188,7 @@ module Protobuf
|
|
206
188
|
# the first defined name will be returned.
|
207
189
|
#
|
208
190
|
def self.name_for_tag(tag)
|
209
|
-
|
191
|
+
enum_for_tag(tag).try(:name)
|
210
192
|
end
|
211
193
|
|
212
194
|
# Public: Check if the given tag is defined by this Enum.
|
@@ -216,37 +198,43 @@ module Protobuf
|
|
216
198
|
# Returns a boolean.
|
217
199
|
#
|
218
200
|
def self.valid_tag?(tag)
|
219
|
-
tag.respond_to?(:to_i) &&
|
201
|
+
tag.respond_to?(:to_i) && all_tags.include?(tag.to_i)
|
220
202
|
end
|
221
203
|
|
222
204
|
# Public: [DEPRECATED] Return a hash of Enum objects keyed
|
223
205
|
# by their :name.
|
224
206
|
#
|
225
207
|
def self.values
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
self.enums.inject({}) do |hash, enum|
|
230
|
-
hash[enum.name] = enum
|
231
|
-
hash
|
232
|
-
end
|
233
|
-
end
|
208
|
+
@values ||= enums.each_with_object({}) do |enum, hash|
|
209
|
+
hash[enum.name] = enum
|
210
|
+
end
|
234
211
|
end
|
235
212
|
|
236
213
|
##
|
237
214
|
# Class Deprecations
|
238
215
|
#
|
216
|
+
class << self
|
217
|
+
::Protobuf.deprecator.define_deprecated_methods(
|
218
|
+
self,
|
219
|
+
:enum_by_value => :enum_for_tag,
|
220
|
+
:name_by_value => :name_for_tag,
|
221
|
+
:get_name_by_tag => :name_for_tag,
|
222
|
+
:value_by_name => :enum_for_name,
|
223
|
+
)
|
239
224
|
|
240
|
-
|
241
|
-
|
242
|
-
deprecate_class_method :get_name_by_tag, :name_for_tag
|
243
|
-
deprecate_class_method :value_by_name, :enum_for_name
|
244
|
-
|
225
|
+
::Protobuf.deprecator.deprecate_methods(self, :values => :enums)
|
226
|
+
end
|
245
227
|
|
246
228
|
##
|
247
229
|
# Attributes
|
248
230
|
#
|
249
231
|
|
232
|
+
private
|
233
|
+
|
234
|
+
attr_writer :parent_class, :name, :tag
|
235
|
+
|
236
|
+
public
|
237
|
+
|
250
238
|
attr_reader :parent_class, :name, :tag
|
251
239
|
|
252
240
|
##
|
@@ -254,10 +242,10 @@ module Protobuf
|
|
254
242
|
#
|
255
243
|
|
256
244
|
def initialize(parent_class, name, tag)
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
super(
|
245
|
+
self.parent_class = parent_class
|
246
|
+
self.name = name
|
247
|
+
self.tag = tag
|
248
|
+
super(tag)
|
261
249
|
end
|
262
250
|
|
263
251
|
# Overriding the class so ActiveRecord/Arel visitor will visit the enum as a Fixnum
|
@@ -281,11 +269,11 @@ module Protobuf
|
|
281
269
|
def to_s(format = :tag)
|
282
270
|
case format
|
283
271
|
when :tag then
|
284
|
-
|
272
|
+
to_i.to_s
|
285
273
|
when :name then
|
286
274
|
name.to_s
|
287
275
|
else
|
288
|
-
|
276
|
+
to_i.to_s
|
289
277
|
end
|
290
278
|
end
|
291
279
|
|
@@ -305,10 +293,7 @@ module Protobuf
|
|
305
293
|
end
|
306
294
|
end
|
307
295
|
|
308
|
-
|
309
|
-
parent_class.warn_deprecated(:value, :to_i)
|
310
|
-
to_i
|
311
|
-
end
|
296
|
+
::Protobuf.deprecator.define_deprecated_methods(self, :value => :to_i)
|
312
297
|
|
313
298
|
##
|
314
299
|
# Instance Aliases
|
@@ -316,4 +301,3 @@ module Protobuf
|
|
316
301
|
alias_method :to_hash_value, :to_i
|
317
302
|
end
|
318
303
|
end
|
319
|
-
|
data/lib/protobuf/field.rb
CHANGED
@@ -38,7 +38,7 @@ module Protobuf
|
|
38
38
|
:sfixed64 => ::Protobuf::Field::Sfixed64Field,
|
39
39
|
:string => ::Protobuf::Field::StringField,
|
40
40
|
:bytes => ::Protobuf::Field::BytesField,
|
41
|
-
:bool => ::Protobuf::Field::BoolField
|
41
|
+
:bool => ::Protobuf::Field::BoolField,
|
42
42
|
}.freeze
|
43
43
|
|
44
44
|
def self.build(message_class, rule, type, name, tag, options = {})
|
@@ -59,7 +59,7 @@ module Protobuf
|
|
59
59
|
elsif type < ::Protobuf::Field::BaseField
|
60
60
|
type
|
61
61
|
else
|
62
|
-
|
62
|
+
fail ArgumentError, "Invalid field type #{type}"
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -14,7 +14,7 @@ module Protobuf
|
|
14
14
|
PACKED_TYPES = [
|
15
15
|
::Protobuf::WireType::VARINT,
|
16
16
|
::Protobuf::WireType::FIXED32,
|
17
|
-
::Protobuf::WireType::FIXED64
|
17
|
+
::Protobuf::WireType::FIXED64,
|
18
18
|
].freeze
|
19
19
|
|
20
20
|
##
|
@@ -51,7 +51,7 @@ module Protobuf
|
|
51
51
|
# Public Instance Methods
|
52
52
|
#
|
53
53
|
|
54
|
-
def acceptable?(
|
54
|
+
def acceptable?(_value)
|
55
55
|
true
|
56
56
|
end
|
57
57
|
|
@@ -59,8 +59,8 @@ module Protobuf
|
|
59
59
|
value
|
60
60
|
end
|
61
61
|
|
62
|
-
def decode(
|
63
|
-
|
62
|
+
def decode(_bytes)
|
63
|
+
fail NotImplementedError, "#{self.class.name}##{__method__}"
|
64
64
|
end
|
65
65
|
|
66
66
|
def default
|
@@ -79,8 +79,8 @@ module Protobuf
|
|
79
79
|
options.key?(:deprecated)
|
80
80
|
end
|
81
81
|
|
82
|
-
def encode(
|
83
|
-
|
82
|
+
def encode(_value)
|
83
|
+
fail NotImplementedError, "#{self.class.name}##{__method__}"
|
84
84
|
end
|
85
85
|
|
86
86
|
def extension?
|
@@ -119,7 +119,7 @@ module Protobuf
|
|
119
119
|
rule == :required
|
120
120
|
end
|
121
121
|
|
122
|
-
# FIXME need to cleanup (rename) this warthog of a method.
|
122
|
+
# FIXME: need to cleanup (rename) this warthog of a method.
|
123
123
|
def set(message_instance, bytes)
|
124
124
|
if packed?
|
125
125
|
array = message_instance.__send__(getter)
|
@@ -148,21 +148,12 @@ module Protobuf
|
|
148
148
|
@setter ||= "#{name}="
|
149
149
|
end
|
150
150
|
|
151
|
-
# FIXME add packed, deprecated, extension options to to_s output
|
151
|
+
# FIXME: add packed, deprecated, extension options to to_s output
|
152
152
|
def to_s
|
153
153
|
"#{rule} #{type_class} #{name} = #{tag} #{default ? "[default=#{default.inspect}]" : ''}"
|
154
154
|
end
|
155
155
|
|
156
|
-
|
157
|
-
$stderr.puts("[DEPRECATED] #{self.class.name}#type usage is deprecated.\nPlease use #type_class instead.")
|
158
|
-
type_class
|
159
|
-
end
|
160
|
-
|
161
|
-
def warn_if_deprecated
|
162
|
-
if ::Protobuf.print_deprecation_warnings? && deprecated?
|
163
|
-
$stderr.puts("[WARNING] #{message_class.name}##{name} field usage is deprecated.")
|
164
|
-
end
|
165
|
-
end
|
156
|
+
::Protobuf.deprecator.define_deprecated_methods(self, :type => :type_class)
|
166
157
|
|
167
158
|
def wire_type
|
168
159
|
::Protobuf::WireType::VARINT
|
@@ -186,25 +177,27 @@ module Protobuf
|
|
186
177
|
|
187
178
|
def define_array_getter
|
188
179
|
field = self
|
180
|
+
method_name = field.getter
|
181
|
+
|
189
182
|
message_class.class_eval do
|
190
|
-
define_method(
|
191
|
-
field.warn_if_deprecated
|
183
|
+
define_method(method_name) do
|
192
184
|
@values[field.name] ||= ::Protobuf::Field::FieldArray.new(field)
|
193
185
|
end
|
186
|
+
::Protobuf.deprecator.deprecate_methods(method_name)
|
194
187
|
end
|
195
188
|
end
|
196
189
|
|
197
190
|
def define_array_setter
|
198
191
|
field = self
|
199
|
-
|
200
|
-
define_method(field.setter) do |val|
|
201
|
-
field.warn_if_deprecated
|
192
|
+
method_name = field.setter
|
202
193
|
|
194
|
+
message_class.class_eval do
|
195
|
+
define_method(method_name) do |val|
|
203
196
|
if val.is_a?(Array)
|
204
197
|
val = val.dup
|
205
198
|
val.compact!
|
206
199
|
else
|
207
|
-
|
200
|
+
fail TypeError, <<-TYPE_ERROR
|
208
201
|
Expected repeated value of type '#{field.type_class}'
|
209
202
|
Got '#{val.class}' for repeated protobuf field #{field.name}
|
210
203
|
TYPE_ERROR
|
@@ -217,33 +210,37 @@ module Protobuf
|
|
217
210
|
@values[field.name].replace(val)
|
218
211
|
end
|
219
212
|
end
|
213
|
+
::Protobuf.deprecator.deprecate_methods(method_name)
|
220
214
|
end
|
221
215
|
end
|
222
216
|
|
223
217
|
def define_getter
|
224
218
|
field = self
|
219
|
+
method_name = field.getter
|
220
|
+
|
225
221
|
message_class.class_eval do
|
226
|
-
define_method(
|
227
|
-
field.warn_if_deprecated
|
222
|
+
define_method(method_name) do
|
228
223
|
@values.fetch(field.name, field.default_value)
|
229
224
|
end
|
225
|
+
::Protobuf.deprecator.deprecate_methods(method_name)
|
230
226
|
end
|
231
227
|
end
|
232
228
|
|
233
229
|
def define_setter
|
234
230
|
field = self
|
235
|
-
|
236
|
-
define_method(field.setter) do |val|
|
237
|
-
field.warn_if_deprecated
|
231
|
+
method_name = field.setter
|
238
232
|
|
233
|
+
message_class.class_eval do
|
234
|
+
define_method(method_name) do |val|
|
239
235
|
if val.nil? || (val.respond_to?(:empty?) && val.empty?)
|
240
236
|
@values.delete(field.name)
|
241
237
|
elsif field.acceptable?(val)
|
242
238
|
@values[field.name] = field.coerce!(val)
|
243
239
|
else
|
244
|
-
|
240
|
+
fail TypeError, "Unacceptable value #{val} for field #{field.name} of type #{field.type_class}"
|
245
241
|
end
|
246
242
|
end
|
243
|
+
::Protobuf.deprecator.deprecate_methods(method_name)
|
247
244
|
end
|
248
245
|
end
|
249
246
|
|
@@ -257,11 +254,10 @@ module Protobuf
|
|
257
254
|
|
258
255
|
def validate_packed_field
|
259
256
|
if packed? && ! ::Protobuf::Field::BaseField::PACKED_TYPES.include?(wire_type)
|
260
|
-
|
257
|
+
fail "Can't use packed encoding for '#{type_class}' type"
|
261
258
|
end
|
262
259
|
end
|
263
260
|
|
264
261
|
end
|
265
262
|
end
|
266
263
|
end
|
267
|
-
|