Nice! Thanks :)
I’ll try it out and report back...

On Fri, 21 Feb 2020 at 14:06 Alex Van Boxel <a...@vanboxel.be> 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 <thesa...@gmail.com> 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 <itt...@gmail.com> 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 protobuf+unsubscr...@googlegroups.com.
>>> 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 protobuf+unsubscr...@googlegroups.com.
>>
> 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 protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/CAOfK4wVpcbhpsN4eDmfprt4w-cB251mhXcrWp5hid%2B%3DXqtbFDw%40mail.gmail.com.

Reply via email to