From eed5cbe5d1c2a171e6edbfe38298256065d37da6 Mon Sep 17 00:00:00 2001 From: MQuy Date: Thu, 2 Feb 2023 10:49:04 +0700 Subject: [PATCH] feat(6178): support enums as integers in jruby --- .../main/java/com/google/protobuf/jruby/RubyMessage.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java b/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java index 92a31d6df2..0d0fe3cc20 100644 --- a/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java +++ b/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java @@ -669,6 +669,7 @@ public class RubyMessage extends RubyObject { * @param options [Hash] options for the decoder * preserve_proto_fieldnames: set true to use original fieldnames (default is to camelCase) * emit_defaults: set true to emit 0/false values (default is to omit them) + * enums_as_integers: set true to emit enum values as integer (default is string) */ @JRubyMethod(name = "encode_json", required = 1, optional = 1, meta = true) public static IRubyObject encodeJson( @@ -690,6 +691,7 @@ public class RubyMessage extends RubyObject { IRubyObject emitDefaults = options.fastARef(runtime.newSymbol("emit_defaults")); IRubyObject preserveNames = options.fastARef(runtime.newSymbol("preserve_proto_fieldnames")); + IRubyObject enumAsIntegers = options.fastARef(runtime.newSymbol("enums_as_integers")); if (emitDefaults != null && emitDefaults.isTrue()) { printer = printer.includingDefaultValueFields(); @@ -698,6 +700,10 @@ public class RubyMessage extends RubyObject { if (preserveNames != null && preserveNames.isTrue()) { printer = printer.preservingProtoFieldNames(); } + + if (enumAsIntegers != null && printingEnumsAsInts.isTrue()) { + printer = printer.printingEnumsAsInts(); + } } printer = printer.usingTypeRegistry(