Re: [protobuf] Re: How to Programmatically determine the Builder method names (getter and setter) for a given field name

2011-03-24 Thread Pherl Liu
You can find the algorithm in source code.
http://code.google.com/p/protobuf/source/browse/trunk/src/google/protobuf/compiler/java/java_helpers.cc

On Wed, Mar 16, 2011 at 2:42 PM, Ravi ravikumarkulan...@gmail.com wrote:
 Hi Thanks a lot for your time.

 Yes the approach looks very clean as the api getField and setField are
 in built. I think we would go with this approach.

 But i am just curious to know whether protobuf published anywhere the
 algorithm for deriving getter and setter method names.

 Thanks,
 Ravikumar K

 On Mar 15, 3:09 pm, Dmitriy Ryaboy dvrya...@gmail.com wrote:
 We needed to do something similar for our project Elephant-Bird that
 provides support for working with Protocol Buffers in Hadoop.

 Protobufs have Descriptors that allow you to determine all of these things
 on the fly, without encoding method naming rules and such.

 Here is the relevant snippet 
 fromhttps://github.com/kevinweil/elephant-bird/blob/master/src/java/com/t...

 public static Message addField(Message m, String name, Object value) {
     Message.Builder builder = m.toBuilder();
     setFieldByName(builder, name, value);
     return builder.build();

 }

 public static void setFieldByName(Message.Builder builder, String
 name, Object value) {
     FieldDescriptor fieldDescriptor =
 builder.getDescriptorForType().findFieldByName(name);
     if (value == null) {
       builder.clearField(fieldDescriptor);
     } else {
       builder.setField(fieldDescriptor, value);
     }
   }
 *
 *

 On Tue, Mar 15, 2011 at 2:19 AM, Ravi ravikumarkulan...@gmail.com wrote:
  Hi,

  We would like to know how to determine the getter and setter method
  names generated in java builder class for a particular field defined
  in proto message.

  Of course, the simple rule says that
  * Convert first letter of the field name to upper case
  * prefix get or set to the field name

  But we want to know all the cases considered while generating builder
  class.
  Like what are the special characters considered? what are the
  exceptional cases?

  Why we want this is,
  In our framework we would be programmatically generating proto files
  from the xsds which we have already.

  Along with this we would be generating an adapter class between our
  framework and the java class generated by protoc compiler.

  This adapter would call getter and setter methods of the builder class
  available in the builder class to retrieve the value and to build the
  object.

  Any help would be appreciated.

  Thanks,
  Ravikumar K

  --
  You received this message because you are subscribed to the Google Groups
  Protocol Buffers group.
  To post to this group, send email to protobuf@googlegroups.com.
  To unsubscribe from this group, send email to
  protobuf+unsubscr...@googlegroups.com.
  For more options, visit this group at
 http://groups.google.com/group/protobuf?hl=en.

 --
 You received this message because you are subscribed to the Google Groups 
 Protocol Buffers group.
 To post to this group, send email to protobuf@googlegroups.com.
 To unsubscribe from this group, send email to 
 protobuf+unsubscr...@googlegroups.com.
 For more options, visit this group at 
 http://groups.google.com/group/protobuf?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.



[protobuf] Re: How to Programmatically determine the Builder method names (getter and setter) for a given field name

2011-03-16 Thread Ravi
Hi Thanks a lot for your time.

Yes the approach looks very clean as the api getField and setField are
in built. I think we would go with this approach.

But i am just curious to know whether protobuf published anywhere the
algorithm for deriving getter and setter method names.

Thanks,
Ravikumar K

On Mar 15, 3:09 pm, Dmitriy Ryaboy dvrya...@gmail.com wrote:
 We needed to do something similar for our project Elephant-Bird that
 provides support for working with Protocol Buffers in Hadoop.

 Protobufs have Descriptors that allow you to determine all of these things
 on the fly, without encoding method naming rules and such.

 Here is the relevant snippet 
 fromhttps://github.com/kevinweil/elephant-bird/blob/master/src/java/com/t...

 public static Message addField(Message m, String name, Object value) {
     Message.Builder builder = m.toBuilder();
     setFieldByName(builder, name, value);
     return builder.build();

 }

 public static void setFieldByName(Message.Builder builder, String
 name, Object value) {
     FieldDescriptor fieldDescriptor =
 builder.getDescriptorForType().findFieldByName(name);
     if (value == null) {
       builder.clearField(fieldDescriptor);
     } else {
       builder.setField(fieldDescriptor, value);
     }
   }
 *
 *

 On Tue, Mar 15, 2011 at 2:19 AM, Ravi ravikumarkulan...@gmail.com wrote:
  Hi,

  We would like to know how to determine the getter and setter method
  names generated in java builder class for a particular field defined
  in proto message.

  Of course, the simple rule says that
  * Convert first letter of the field name to upper case
  * prefix get or set to the field name

  But we want to know all the cases considered while generating builder
  class.
  Like what are the special characters considered? what are the
  exceptional cases?

  Why we want this is,
  In our framework we would be programmatically generating proto files
  from the xsds which we have already.

  Along with this we would be generating an adapter class between our
  framework and the java class generated by protoc compiler.

  This adapter would call getter and setter methods of the builder class
  available in the builder class to retrieve the value and to build the
  object.

  Any help would be appreciated.

  Thanks,
  Ravikumar K

  --
  You received this message because you are subscribed to the Google Groups
  Protocol Buffers group.
  To post to this group, send email to protobuf@googlegroups.com.
  To unsubscribe from this group, send email to
  protobuf+unsubscr...@googlegroups.com.
  For more options, visit this group at
 http://groups.google.com/group/protobuf?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.