Lets say I have test.proto file:

    syntax = "proto3";
    
    option java_package = "testing";
    option java_outer_classname = "Test_v1";
    
    import "google/protobuf/wrappers.proto";
    
    message TestMessage {
        .google.protobuf.Int32Value integerField = 1;
    }


If I compile (using protoc v3.5.0) it to c# code I will get nullable type 
properties:

    public int? IntegerField {
       get { return integerField_; }
       set { integerField_ = value; }
     }


But if I compile it to Java code, fields will be of well-known type:

    public Builder setIntegerField(com.google.protobuf.Int32Value value) {
      if (integerFieldBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        integerField_ = value;
        onChanged();
      } else {
        integerFieldBuilder_.setMessage(value);
     }


I am moving project from proto2 to proto3 so I would like to avoid using 
well-known types, because it will require a lot of work to change related 
code. With c# projects I will not require to modify anything but in Java I 
will need to do as in the following example: 

    TestMessage.Builder builder = TestMessage.newBuilder();
    builder.setIntegerField(5); //<-- instead of this (with proto2)
    builder.setIntegerField(Int32Value.newBuilder().setValue(5)); //<-- I 
will need to change to something like this (with proto3)


Is there a way to compile proto file to Java so setters would accept 
primitive classes/wrappers (String, Integer, etc.) as parameters?

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to