diff options
Diffstat (limited to 'ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java')
-rw-r--r-- | ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java b/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java index 38226c4e..f3c488bc 100644 --- a/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java +++ b/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java @@ -73,6 +73,17 @@ public class RubyFieldDescriptor extends RubyObject { /* * call-seq: + * FieldDescriptor.label + * + * Return the label of this field. + */ + @JRubyMethod(name = "label") + public IRubyObject getLabel(ThreadContext context) { + return this.label; + } + + /* + * call-seq: * FieldDescriptor.label = label * * Sets the label on this field. Cannot be called if field is part of a message @@ -80,8 +91,10 @@ public class RubyFieldDescriptor extends RubyObject { */ @JRubyMethod(name = "label=") public IRubyObject setLabel(ThreadContext context, IRubyObject value) { + String labelName = value.asJavaString(); + this.label = context.runtime.newSymbol(labelName.toLowerCase()); this.builder.setLabel( - DescriptorProtos.FieldDescriptorProto.Label.valueOf("LABEL_" + value.asJavaString().toUpperCase())); + DescriptorProtos.FieldDescriptorProto.Label.valueOf("LABEL_" + labelName.toUpperCase())); return context.runtime.getNil(); } @@ -89,18 +102,13 @@ public class RubyFieldDescriptor extends RubyObject { * call-seq: * FieldDescriptor.name => name * - * Returns the name of this field. + * Returns the name of this field as a Ruby String, or nil if it is not set. */ @JRubyMethod(name = "name") public IRubyObject getName(ThreadContext context) { return this.name; } - @JRubyMethod(name = "subtype") - public IRubyObject getSubType(ThreadContext context) { - return subType; - } - /* * call-seq: * FieldDescriptor.name = name @@ -116,6 +124,12 @@ public class RubyFieldDescriptor extends RubyObject { return context.runtime.getNil(); } + + @JRubyMethod(name = "subtype") + public IRubyObject getSubType(ThreadContext context) { + return subType; + } + /* * call-seq: * FieldDescriptor.type => type @@ -146,6 +160,18 @@ public class RubyFieldDescriptor extends RubyObject { /* * call-seq: + * FieldDescriptor.number => number + * + * Returns this field's number, as a Ruby Integer, or nil if not yet set. + * + */ + @JRubyMethod(name = "number") + public IRubyObject getnumber(ThreadContext context) { + return this.number; + } + + /* + * call-seq: * FieldDescriptor.number = number * * Sets the tag number for this field. Cannot be called if field is part of a @@ -153,6 +179,7 @@ public class RubyFieldDescriptor extends RubyObject { */ @JRubyMethod(name = "number=") public IRubyObject setNumber(ThreadContext context, IRubyObject value) { + this.number = value; this.builder.setNumber(RubyNumeric.num2int(value)); return context.runtime.getNil(); } @@ -240,6 +267,8 @@ public class RubyFieldDescriptor extends RubyObject { private DescriptorProtos.FieldDescriptorProto.Builder builder; private IRubyObject name; + private IRubyObject label; + private IRubyObject number; private IRubyObject subType; private IRubyObject oneofName; private Descriptors.FieldDescriptor fieldDef; |