protobuf 3.3.6 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|