Nice! Thanks :) I’ll try it out and report back... On Fri, 21 Feb 2020 at 14:06 Alex Van Boxel <[email protected]> wrote:
> You can use this class from the metastore. A lot of work has pored into > this class. The plan is to actually donate this to the proto-java > implementation if it has been battle tested. > > > https://github.com/anemos-io/metastore/blob/master/putils/src/main/java/io/anemos/metastore/putils/ProtoLanguageFileWriter.java > > It currently only support proto3. > > _/ > _/ Alex Van Boxel > > > On Fri, Feb 21, 2020 at 11:02 AM Nadav Samet <[email protected]> wrote: > >> Hi Ittai, >> >> It sounds like you are expecting your plugin to emit proto files in text >> format. Your code is assigning binary data into the file's content, and >> what protoc does is just writing it to the files it creates. There's >> nothing that would automatically detect that you are passing a >> DescriptorProto and would transform that into text representation. If you >> want the output to be in text format you need to manually create a string >> with the file content you want. >> >> >> On Fri, Feb 21, 2020 at 11:40 AM ittai zeidman <[email protected]> wrote: >> >>> Hi, >>> I have proto files which contain valid proto messages and services and my >>> own DSL which I want to transpile into proto messages and services. >>> My idea is to invoke protoc and have it process "my proto" with a protoc >>> plugin that will emmit "standard proto" (which I'll later feed into protoc >>> again). >>> The reason I'm going through the intermediate proto files is because we >>> need them to integrate with other systems. >>> >>> I'm trying to write this plugin using protobuf-java (jvm developer) but the >>> proto file that is emitted is incorrect. >>> >>> I think (and hope) I'm doing something stupid and maybe someone here can >>> point me to the right direction. >>> >>> >>> Thanks in advance... >>> >>> >>> Some of my code (to generate a hardcoded proto file with one message and >>> one field): >>> >>> DescriptorProtos.DescriptorProto protoMessage = >>> DescriptorProtos.DescriptorProto.newBuilder() >>> .setName("messageGreeting") >>> .addField(DescriptorProtos.FieldDescriptorProto.newBuilder() >>> .setName("greeting") >>> .setType(FieldDescriptorProto.Type.TYPE_STRING) >>> .setNumber(0) >>> .setDefaultValue("hi") >>> .build() >>> ) >>> .build(); >>> DescriptorProtos.FileDescriptorProto proto = >>> DescriptorProtos.FileDescriptorProto.newBuilder() >>> .addMessageType( >>> protoMessage >>> ) >>> .build(); >>> ByteArrayOutputStream byteArrayOutputStream = new >>> ByteArrayOutputStream(); >>> >>> proto.writeTo(byteArrayOutputStream); // should be lazy? >>> >>> CodeGeneratorResponse.File file = >>> CodeGeneratorResponse.File.newBuilder() >>> .setName("yo.proto") >>> >>> .setContentBytes(ByteString.copyFrom(byteArrayOutputStream.toByteArray)) >>> >>> // I also tried: >>> >>> // .mergeFrom(protoMessage) >>> // .setContent(byteArrayOutputStream.toString) // should be lazy? >>> // .mergeFrom(byteArrayOutputStream.toByteArray) >>> .build(); >>> file.toByteArray >>> >>> >>> Unfortunately what I get is: >>> >>> cat yo.proto: >>> "% >>> messageGreeting >>> >>> >>> greeting( :hi% >>> >>> and in a text editor: >>> 2225 0a0f 6d65 7373 6167 6547 7265 6574 >>> 696e 6712 120a 0867 7265 6574 696e 6718 >>> 0028 093a 0268 69 >>> >>> -- >>> 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 view this discussion on the web visit >>> https://groups.google.com/d/msgid/protobuf/03f1f05d-a9ef-4490-bf6a-469f16212f9f%40googlegroups.com >>> <https://groups.google.com/d/msgid/protobuf/03f1f05d-a9ef-4490-bf6a-469f16212f9f%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> >> >> -- >> -Nadav >> >> -- >> 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 view this discussion on the web visit >> https://groups.google.com/d/msgid/protobuf/CANZcNEryh5FBtZQ%3D4_EZuy5N21JeMxJ6NTjhR2T68DM5s9OWtw%40mail.gmail.com >> <https://groups.google.com/d/msgid/protobuf/CANZcNEryh5FBtZQ%3D4_EZuy5N21JeMxJ6NTjhR2T68DM5s9OWtw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/CAOfK4wVpcbhpsN4eDmfprt4w-cB251mhXcrWp5hid%2B%3DXqtbFDw%40mail.gmail.com.
