What you're asking for is not currently do-able. There is an existing request to add this functionality though: https://github.com/google/protobuf/issues/2055
In the meantime, you can accomplish this using a custom plugin that is run in addition to the normal java code-gen. Plugins can generate extra code into existing Java source files using insertion points <https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/plugin.proto#L161>. So you could generate overloaded forms of the setter methods into the relevant builder classes (via "builder_scope" insertion points). ---- *Josh Humphries* [email protected] On Thu, Jan 4, 2018 at 7:13 AM, Renatas M <[email protected]> wrote: > 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. > -- 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.
