aboutsummaryrefslogtreecommitdiffhomepage
path: root/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java
diff options
context:
space:
mode:
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.java43
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;