Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread ritesh singh
Ahh yes, thanks a lot. I was using wrong JsonFormat 
com.android.tools.idea.protobuf.util.JsonFormat

On Saturday, February 25, 2023 at 3:47:43 AM UTC+5:30 Adam Cozzette wrote:

> Once you have the DynamicMessage, you can use the JsonFormat API the same 
> way you would use it with ordinary messages.
>
> On Fri, Feb 24, 2023 at 1:52 PM ritesh singh  wrote:
>
>> Thanks, any leads on generating json at run time using dynamicMessage. 
>> Any existing api util if you can point me to.
>>
>> On Saturday, February 25, 2023 at 2:44:14 AM UTC+5:30 Adam Cozzette wrote:
>>
>>> I think DynamicMessage is the right approach since you need to work with 
>>> proto files that are only known at run time. This will also allow you to 
>>> generate JSON.
>>>
>>> On Fri, Feb 24, 2023 at 11:19 AM ritesh singh  
>>> wrote:
>>>

 Or if there's a better different approach instead of relying on 
 FileDescriptorSet and DynamicMessage - considering i have access to only 
 .pb (generate by proto-lite) or .proto file.
 On Saturday, February 25, 2023 at 12:46:44 AM UTC+5:30 ritesh singh 
 wrote:

> Thanks Adam, so basically i am writing an Intellij plugin for Android 
> Studio. 
> The plugin will just take the .pb file and .proto file, run the protoc 
> compiler, generate FileDescriptorSet for proto and create a 
> DynamicMessage 
> using generated fileDescriptorSet and .pb.
>
> I was wondering if there a way to generate the json schema, as in 
> key-value pair. As we know, lite version doesn't include fileds, is it 
> possible to do it at run-time, as in extract keys in any phase?
>
> On Saturday, February 25, 2023 at 12:30:54 AM UTC+5:30 Adam Cozzette 
> wrote:
>
>> A serialized protocol buffer doesn't include any type information, so 
>> before you can parse one you have to know in advance which type you're 
>> expecting. If you want to be prepared to accept either A or B, then a 
>> good 
>> solution is to put both types inside a oneof in a parent message, and 
>> then 
>> just parse the parent message normally.
>>
>> It doesn't matter which protobuf implementation created the .pb file, 
>> since all implementations use the same wire format.
>>
>> That is true that the Java lite implementation doesn't support 
>> reflection and doesn't include descriptors, so it cannot serialize 
>> protos 
>> to JSON. If you can stick to the binary format then that would be ideal 
>> since that format is useable everywhere.
>>
>> On Thu, Feb 23, 2023 at 5:33 PM ritesh singh  
>> wrote:
>>
>>> Also does it matter if .pb was created using proto lite and android 
>>> end.
>>>
>>> I believe the lite version doesn't store fields, so converting it to 
>>> json using proto-util won't work and i need to make use of reflection.
>>>
>>> On Fri, 24 Feb, 2023, 6:54 am ritesh singh,  
>>> wrote:
>>>
 Thanks Adam. I will give it a shot. I thought of using *protoc*  
 compiler, but what if my proto file contains nested messages




 *message A {  B b = 1}*
 *message B {*
 *}*


 After running *protoc *on the proto file, it will generate 2 java 
 classes. I won't know which generated class to use against my .pb 
 file, as 
 my plugin is only aware of .pb and .proto file.

 Please correct me, if am wrong.
 On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette 
 wrote:

> I suspect that your code is getting an error because it's trying 
> to parse a .proto file as a serialized protocol buffer. (This won't 
> work 
> since .proto files use a text representation very different from the 
> standard protobuf binary format.) Probably the best way to fix this 
> problem 
> would be to invoke protoc with --descriptor_set_out to parse the 
> proto file 
> and convert it into a serialized FileDescriptorSet. A 
> FileDescriptorSet is 
> just a protocol buffer, so once you have it in that form you can 
> easily 
> parse it like you would parse any other serialized proto.
>
> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  
> wrote:
>
>> Hello, 
>>
>> I am working on creating a Android Studio plugin for proto data 
>> store.
>> Android uses proto-lite, my current approach, i get the .pb file 
>> and .proto file and use the same in intellij plugin to deserialise 
>> it.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *val psiFile = 
>> PsiManager.getInstance(project).findFile(protoFile) val 
>> protoFileContent = 

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread 'Adam Cozzette' via Protocol Buffers
Once you have the DynamicMessage, you can use the JsonFormat API the same
way you would use it with ordinary messages.

On Fri, Feb 24, 2023 at 1:52 PM ritesh singh  wrote:

> Thanks, any leads on generating json at run time using dynamicMessage. Any
> existing api util if you can point me to.
>
> On Saturday, February 25, 2023 at 2:44:14 AM UTC+5:30 Adam Cozzette wrote:
>
>> I think DynamicMessage is the right approach since you need to work with
>> proto files that are only known at run time. This will also allow you to
>> generate JSON.
>>
>> On Fri, Feb 24, 2023 at 11:19 AM ritesh singh 
>> wrote:
>>
>>>
>>> Or if there's a better different approach instead of relying on
>>> FileDescriptorSet and DynamicMessage - considering i have access to only
>>> .pb (generate by proto-lite) or .proto file.
>>> On Saturday, February 25, 2023 at 12:46:44 AM UTC+5:30 ritesh singh
>>> wrote:
>>>
 Thanks Adam, so basically i am writing an Intellij plugin for Android
 Studio.
 The plugin will just take the .pb file and .proto file, run the protoc
 compiler, generate FileDescriptorSet for proto and create a DynamicMessage
 using generated fileDescriptorSet and .pb.

 I was wondering if there a way to generate the json schema, as in
 key-value pair. As we know, lite version doesn't include fileds, is it
 possible to do it at run-time, as in extract keys in any phase?

 On Saturday, February 25, 2023 at 12:30:54 AM UTC+5:30 Adam Cozzette
 wrote:

> A serialized protocol buffer doesn't include any type information, so
> before you can parse one you have to know in advance which type you're
> expecting. If you want to be prepared to accept either A or B, then a good
> solution is to put both types inside a oneof in a parent message, and then
> just parse the parent message normally.
>
> It doesn't matter which protobuf implementation created the .pb file,
> since all implementations use the same wire format.
>
> That is true that the Java lite implementation doesn't support
> reflection and doesn't include descriptors, so it cannot serialize protos
> to JSON. If you can stick to the binary format then that would be ideal
> since that format is useable everywhere.
>
> On Thu, Feb 23, 2023 at 5:33 PM ritesh singh 
> wrote:
>
>> Also does it matter if .pb was created using proto lite and android
>> end.
>>
>> I believe the lite version doesn't store fields, so converting it to
>> json using proto-util won't work and i need to make use of reflection.
>>
>> On Fri, 24 Feb, 2023, 6:54 am ritesh singh, 
>> wrote:
>>
>>> Thanks Adam. I will give it a shot. I thought of using *protoc*
>>> compiler, but what if my proto file contains nested messages
>>>
>>>
>>>
>>>
>>> *message A {  B b = 1}*
>>> *message B {*
>>> *}*
>>>
>>>
>>> After running *protoc *on the proto file, it will generate 2 java
>>> classes. I won't know which generated class to use against my .pb file, 
>>> as
>>> my plugin is only aware of .pb and .proto file.
>>>
>>> Please correct me, if am wrong.
>>> On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette
>>> wrote:
>>>
 I suspect that your code is getting an error because it's trying to
 parse a .proto file as a serialized protocol buffer. (This won't work 
 since
 .proto files use a text representation very different from the standard
 protobuf binary format.) Probably the best way to fix this problem 
 would be
 to invoke protoc with --descriptor_set_out to parse the proto file and
 convert it into a serialized FileDescriptorSet. A FileDescriptorSet is 
 just
 a protocol buffer, so once you have it in that form you can easily 
 parse it
 like you would parse any other serialized proto.

 On Thu, Feb 23, 2023 at 4:59 PM ritesh singh 
 wrote:

> Hello,
>
> I am working on creating a Android Studio plugin for proto data
> store.
> Android uses proto-lite, my current approach, i get the .pb file
> and .proto file and use the same in intellij plugin to deserialise it.
>
>
>
>
>
>
>
>
>
>
>
>
> *val psiFile = PsiManager.getInstance(project).findFile(protoFile)
> val protoFileContent = psiFile!!.text val fileDescriptorProto:
> DescriptorProtos.FileDescriptorProto =
> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
> val fileDescriptor =
> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
> arrayOfNulls(0))
> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer =
> 

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread ritesh singh
Thanks, any leads on generating json at run time using dynamicMessage. Any 
existing api util if you can point me to.

On Saturday, February 25, 2023 at 2:44:14 AM UTC+5:30 Adam Cozzette wrote:

> I think DynamicMessage is the right approach since you need to work with 
> proto files that are only known at run time. This will also allow you to 
> generate JSON.
>
> On Fri, Feb 24, 2023 at 11:19 AM ritesh singh  wrote:
>
>>
>> Or if there's a better different approach instead of relying on 
>> FileDescriptorSet and DynamicMessage - considering i have access to only 
>> .pb (generate by proto-lite) or .proto file.
>> On Saturday, February 25, 2023 at 12:46:44 AM UTC+5:30 ritesh singh wrote:
>>
>>> Thanks Adam, so basically i am writing an Intellij plugin for Android 
>>> Studio. 
>>> The plugin will just take the .pb file and .proto file, run the protoc 
>>> compiler, generate FileDescriptorSet for proto and create a DynamicMessage 
>>> using generated fileDescriptorSet and .pb.
>>>
>>> I was wondering if there a way to generate the json schema, as in 
>>> key-value pair. As we know, lite version doesn't include fileds, is it 
>>> possible to do it at run-time, as in extract keys in any phase?
>>>
>>> On Saturday, February 25, 2023 at 12:30:54 AM UTC+5:30 Adam Cozzette 
>>> wrote:
>>>
 A serialized protocol buffer doesn't include any type information, so 
 before you can parse one you have to know in advance which type you're 
 expecting. If you want to be prepared to accept either A or B, then a good 
 solution is to put both types inside a oneof in a parent message, and then 
 just parse the parent message normally.

 It doesn't matter which protobuf implementation created the .pb file, 
 since all implementations use the same wire format.

 That is true that the Java lite implementation doesn't support 
 reflection and doesn't include descriptors, so it cannot serialize protos 
 to JSON. If you can stick to the binary format then that would be ideal 
 since that format is useable everywhere.

 On Thu, Feb 23, 2023 at 5:33 PM ritesh singh  
 wrote:

> Also does it matter if .pb was created using proto lite and android 
> end.
>
> I believe the lite version doesn't store fields, so converting it to 
> json using proto-util won't work and i need to make use of reflection.
>
> On Fri, 24 Feb, 2023, 6:54 am ritesh singh,  
> wrote:
>
>> Thanks Adam. I will give it a shot. I thought of using *protoc*  
>> compiler, but what if my proto file contains nested messages
>>
>>
>>
>>
>> *message A {  B b = 1}*
>> *message B {*
>> *}*
>>
>>
>> After running *protoc *on the proto file, it will generate 2 java 
>> classes. I won't know which generated class to use against my .pb file, 
>> as 
>> my plugin is only aware of .pb and .proto file.
>>
>> Please correct me, if am wrong.
>> On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette 
>> wrote:
>>
>>> I suspect that your code is getting an error because it's trying to 
>>> parse a .proto file as a serialized protocol buffer. (This won't work 
>>> since 
>>> .proto files use a text representation very different from the standard 
>>> protobuf binary format.) Probably the best way to fix this problem 
>>> would be 
>>> to invoke protoc with --descriptor_set_out to parse the proto file and 
>>> convert it into a serialized FileDescriptorSet. A FileDescriptorSet is 
>>> just 
>>> a protocol buffer, so once you have it in that form you can easily 
>>> parse it 
>>> like you would parse any other serialized proto.
>>>
>>> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  
>>> wrote:
>>>
 Hello, 

 I am working on creating a Android Studio plugin for proto data 
 store.
 Android uses proto-lite, my current approach, i get the .pb file 
 and .proto file and use the same in intellij plugin to deserialise it.












 *val psiFile = PsiManager.getInstance(project).findFile(protoFile) 
 val protoFileContent = psiFile!!.text val fileDescriptorProto: 
 DescriptorProtos.FileDescriptorProto = 
 DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
  
 val fileDescriptor = 
 Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
 arrayOfNulls(0)) 
 val messageDescriptor = fileDescriptor.messageTypes[0] val buffer = 
 pbFile.contentsToByteArray() val messageBuilder: 
 DynamicMessage.Builder = 
 DynamicMessage.newBuilder(messageDescriptor) 
 messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() 
 val 
 text: String = 

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread 'Adam Cozzette' via Protocol Buffers
I think DynamicMessage is the right approach since you need to work with
proto files that are only known at run time. This will also allow you to
generate JSON.

On Fri, Feb 24, 2023 at 11:19 AM ritesh singh 
wrote:

>
> Or if there's a better different approach instead of relying on
> FileDescriptorSet and DynamicMessage - considering i have access to only
> .pb (generate by proto-lite) or .proto file.
> On Saturday, February 25, 2023 at 12:46:44 AM UTC+5:30 ritesh singh wrote:
>
>> Thanks Adam, so basically i am writing an Intellij plugin for Android
>> Studio.
>> The plugin will just take the .pb file and .proto file, run the protoc
>> compiler, generate FileDescriptorSet for proto and create a DynamicMessage
>> using generated fileDescriptorSet and .pb.
>>
>> I was wondering if there a way to generate the json schema, as in
>> key-value pair. As we know, lite version doesn't include fileds, is it
>> possible to do it at run-time, as in extract keys in any phase?
>>
>> On Saturday, February 25, 2023 at 12:30:54 AM UTC+5:30 Adam Cozzette
>> wrote:
>>
>>> A serialized protocol buffer doesn't include any type information, so
>>> before you can parse one you have to know in advance which type you're
>>> expecting. If you want to be prepared to accept either A or B, then a good
>>> solution is to put both types inside a oneof in a parent message, and then
>>> just parse the parent message normally.
>>>
>>> It doesn't matter which protobuf implementation created the .pb file,
>>> since all implementations use the same wire format.
>>>
>>> That is true that the Java lite implementation doesn't support
>>> reflection and doesn't include descriptors, so it cannot serialize protos
>>> to JSON. If you can stick to the binary format then that would be ideal
>>> since that format is useable everywhere.
>>>
>>> On Thu, Feb 23, 2023 at 5:33 PM ritesh singh 
>>> wrote:
>>>
 Also does it matter if .pb was created using proto lite and android end.

 I believe the lite version doesn't store fields, so converting it to
 json using proto-util won't work and i need to make use of reflection.

 On Fri, 24 Feb, 2023, 6:54 am ritesh singh, 
 wrote:

> Thanks Adam. I will give it a shot. I thought of using *protoc*
> compiler, but what if my proto file contains nested messages
>
>
>
>
> *message A {  B b = 1}*
> *message B {*
> *}*
>
>
> After running *protoc *on the proto file, it will generate 2 java
> classes. I won't know which generated class to use against my .pb file, as
> my plugin is only aware of .pb and .proto file.
>
> Please correct me, if am wrong.
> On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette
> wrote:
>
>> I suspect that your code is getting an error because it's trying to
>> parse a .proto file as a serialized protocol buffer. (This won't work 
>> since
>> .proto files use a text representation very different from the standard
>> protobuf binary format.) Probably the best way to fix this problem would 
>> be
>> to invoke protoc with --descriptor_set_out to parse the proto file and
>> convert it into a serialized FileDescriptorSet. A FileDescriptorSet is 
>> just
>> a protocol buffer, so once you have it in that form you can easily parse 
>> it
>> like you would parse any other serialized proto.
>>
>> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh 
>> wrote:
>>
>>> Hello,
>>>
>>> I am working on creating a Android Studio plugin for proto data
>>> store.
>>> Android uses proto-lite, my current approach, i get the .pb file and
>>> .proto file and use the same in intellij plugin to deserialise it.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *val psiFile = PsiManager.getInstance(project).findFile(protoFile)
>>> val protoFileContent = psiFile!!.text val fileDescriptorProto:
>>> DescriptorProtos.FileDescriptorProto =
>>> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
>>> val fileDescriptor =
>>> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
>>> arrayOfNulls(0))
>>> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer =
>>> pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder 
>>> =
>>> DynamicMessage.newBuilder(messageDescriptor)
>>> messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() 
>>> val
>>> text: String = TextFormat.printToString(message)*
>>>
>>> Above code is throwing error in parsing step,* Protocol message tag
>>> had invalid wire type.*
>>>
>>> Thanks in advance.
>>>
>>> --
>>> 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,

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread ritesh singh

Or if there's a better different approach instead of relying on 
FileDescriptorSet and DynamicMessage - considering i have access to only 
.pb (generate by proto-lite) or .proto file.
On Saturday, February 25, 2023 at 12:46:44 AM UTC+5:30 ritesh singh wrote:

> Thanks Adam, so basically i am writing an Intellij plugin for Android 
> Studio. 
> The plugin will just take the .pb file and .proto file, run the protoc 
> compiler, generate FileDescriptorSet for proto and create a DynamicMessage 
> using generated fileDescriptorSet and .pb.
>
> I was wondering if there a way to generate the json schema, as in 
> key-value pair. As we know, lite version doesn't include fileds, is it 
> possible to do it at run-time, as in extract keys in any phase?
>
> On Saturday, February 25, 2023 at 12:30:54 AM UTC+5:30 Adam Cozzette wrote:
>
>> A serialized protocol buffer doesn't include any type information, so 
>> before you can parse one you have to know in advance which type you're 
>> expecting. If you want to be prepared to accept either A or B, then a good 
>> solution is to put both types inside a oneof in a parent message, and then 
>> just parse the parent message normally.
>>
>> It doesn't matter which protobuf implementation created the .pb file, 
>> since all implementations use the same wire format.
>>
>> That is true that the Java lite implementation doesn't support reflection 
>> and doesn't include descriptors, so it cannot serialize protos to JSON. If 
>> you can stick to the binary format then that would be ideal since that 
>> format is useable everywhere.
>>
>> On Thu, Feb 23, 2023 at 5:33 PM ritesh singh  wrote:
>>
>>> Also does it matter if .pb was created using proto lite and android end.
>>>
>>> I believe the lite version doesn't store fields, so converting it to 
>>> json using proto-util won't work and i need to make use of reflection.
>>>
>>> On Fri, 24 Feb, 2023, 6:54 am ritesh singh,  wrote:
>>>
 Thanks Adam. I will give it a shot. I thought of using *protoc*  
 compiler, but what if my proto file contains nested messages




 *message A {  B b = 1}*
 *message B {*
 *}*


 After running *protoc *on the proto file, it will generate 2 java 
 classes. I won't know which generated class to use against my .pb file, as 
 my plugin is only aware of .pb and .proto file.

 Please correct me, if am wrong.
 On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette wrote:

> I suspect that your code is getting an error because it's trying to 
> parse a .proto file as a serialized protocol buffer. (This won't work 
> since 
> .proto files use a text representation very different from the standard 
> protobuf binary format.) Probably the best way to fix this problem would 
> be 
> to invoke protoc with --descriptor_set_out to parse the proto file and 
> convert it into a serialized FileDescriptorSet. A FileDescriptorSet is 
> just 
> a protocol buffer, so once you have it in that form you can easily parse 
> it 
> like you would parse any other serialized proto.
>
> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  
> wrote:
>
>> Hello, 
>>
>> I am working on creating a Android Studio plugin for proto data store.
>> Android uses proto-lite, my current approach, i get the .pb file and 
>> .proto file and use the same in intellij plugin to deserialise it.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *val psiFile = PsiManager.getInstance(project).findFile(protoFile) 
>> val protoFileContent = psiFile!!.text val fileDescriptorProto: 
>> DescriptorProtos.FileDescriptorProto = 
>> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
>>  
>> val fileDescriptor = 
>> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
>> arrayOfNulls(0)) 
>> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer = 
>> pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder 
>> = 
>> DynamicMessage.newBuilder(messageDescriptor) 
>> messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() 
>> val 
>> text: String = TextFormat.printToString(message)*
>>
>> Above code is throwing error in parsing step,* Protocol message tag 
>> had invalid wire type.*
>>
>> Thanks in advance.
>>
>> -- 
>> 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+u...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/protobuf/7fe3a019-e846-4792-8d8a-1655a2d93975n%40googlegroups.com
>>  
>> 

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread ritesh singh
Thanks Adam, so basically i am writing an Intellij plugin for Android 
Studio. 
The plugin will just take the .pb file and .proto file, run the protoc 
compiler, generate FileDescriptorSet for proto and create a DynamicMessage 
using generated fileDescriptorSet and .pb.

I was wondering if there a way to generate the json schema, as in key-value 
pair. As we know, lite version doesn't include fileds, is it possible to do 
it at run-time, as in extract keys in any phase?

On Saturday, February 25, 2023 at 12:30:54 AM UTC+5:30 Adam Cozzette wrote:

> A serialized protocol buffer doesn't include any type information, so 
> before you can parse one you have to know in advance which type you're 
> expecting. If you want to be prepared to accept either A or B, then a good 
> solution is to put both types inside a oneof in a parent message, and then 
> just parse the parent message normally.
>
> It doesn't matter which protobuf implementation created the .pb file, 
> since all implementations use the same wire format.
>
> That is true that the Java lite implementation doesn't support reflection 
> and doesn't include descriptors, so it cannot serialize protos to JSON. If 
> you can stick to the binary format then that would be ideal since that 
> format is useable everywhere.
>
> On Thu, Feb 23, 2023 at 5:33 PM ritesh singh  wrote:
>
>> Also does it matter if .pb was created using proto lite and android end.
>>
>> I believe the lite version doesn't store fields, so converting it to json 
>> using proto-util won't work and i need to make use of reflection.
>>
>> On Fri, 24 Feb, 2023, 6:54 am ritesh singh,  wrote:
>>
>>> Thanks Adam. I will give it a shot. I thought of using *protoc*  
>>> compiler, but what if my proto file contains nested messages
>>>
>>>
>>>
>>>
>>> *message A {  B b = 1}*
>>> *message B {*
>>> *}*
>>>
>>>
>>> After running *protoc *on the proto file, it will generate 2 java 
>>> classes. I won't know which generated class to use against my .pb file, as 
>>> my plugin is only aware of .pb and .proto file.
>>>
>>> Please correct me, if am wrong.
>>> On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette wrote:
>>>
 I suspect that your code is getting an error because it's trying to 
 parse a .proto file as a serialized protocol buffer. (This won't work 
 since 
 .proto files use a text representation very different from the standard 
 protobuf binary format.) Probably the best way to fix this problem would 
 be 
 to invoke protoc with --descriptor_set_out to parse the proto file and 
 convert it into a serialized FileDescriptorSet. A FileDescriptorSet is 
 just 
 a protocol buffer, so once you have it in that form you can easily parse 
 it 
 like you would parse any other serialized proto.

 On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  
 wrote:

> Hello, 
>
> I am working on creating a Android Studio plugin for proto data store.
> Android uses proto-lite, my current approach, i get the .pb file and 
> .proto file and use the same in intellij plugin to deserialise it.
>
>
>
>
>
>
>
>
>
>
>
>
> *val psiFile = PsiManager.getInstance(project).findFile(protoFile) val 
> protoFileContent = psiFile!!.text val fileDescriptorProto: 
> DescriptorProtos.FileDescriptorProto = 
> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
>  
> val fileDescriptor = 
> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
> arrayOfNulls(0)) 
> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer = 
> pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder = 
> DynamicMessage.newBuilder(messageDescriptor) 
> messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() val 
> text: String = TextFormat.printToString(message)*
>
> Above code is throwing error in parsing step,* Protocol message tag 
> had invalid wire type.*
>
> Thanks in advance.
>
> -- 
> 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+u...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/protobuf/7fe3a019-e846-4792-8d8a-1655a2d93975n%40googlegroups.com
>  
> 
> .
>
 -- 
>>> 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+u...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> 

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-24 Thread 'Adam Cozzette' via Protocol Buffers
A serialized protocol buffer doesn't include any type information, so
before you can parse one you have to know in advance which type you're
expecting. If you want to be prepared to accept either A or B, then a good
solution is to put both types inside a oneof in a parent message, and then
just parse the parent message normally.

It doesn't matter which protobuf implementation created the .pb file, since
all implementations use the same wire format.

That is true that the Java lite implementation doesn't support reflection
and doesn't include descriptors, so it cannot serialize protos to JSON. If
you can stick to the binary format then that would be ideal since that
format is useable everywhere.

On Thu, Feb 23, 2023 at 5:33 PM ritesh singh  wrote:

> Also does it matter if .pb was created using proto lite and android end.
>
> I believe the lite version doesn't store fields, so converting it to json
> using proto-util won't work and i need to make use of reflection.
>
> On Fri, 24 Feb, 2023, 6:54 am ritesh singh, 
> wrote:
>
>> Thanks Adam. I will give it a shot. I thought of using *protoc*
>> compiler, but what if my proto file contains nested messages
>>
>>
>>
>>
>> *message A {  B b = 1}*
>> *message B {*
>> *}*
>>
>>
>> After running *protoc *on the proto file, it will generate 2 java
>> classes. I won't know which generated class to use against my .pb file, as
>> my plugin is only aware of .pb and .proto file.
>>
>> Please correct me, if am wrong.
>> On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette wrote:
>>
>>> I suspect that your code is getting an error because it's trying to
>>> parse a .proto file as a serialized protocol buffer. (This won't work since
>>> .proto files use a text representation very different from the standard
>>> protobuf binary format.) Probably the best way to fix this problem would be
>>> to invoke protoc with --descriptor_set_out to parse the proto file and
>>> convert it into a serialized FileDescriptorSet. A FileDescriptorSet is just
>>> a protocol buffer, so once you have it in that form you can easily parse it
>>> like you would parse any other serialized proto.
>>>
>>> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh 
>>> wrote:
>>>
 Hello,

 I am working on creating a Android Studio plugin for proto data store.
 Android uses proto-lite, my current approach, i get the .pb file and
 .proto file and use the same in intellij plugin to deserialise it.












 *val psiFile = PsiManager.getInstance(project).findFile(protoFile) val
 protoFileContent = psiFile!!.text val fileDescriptorProto:
 DescriptorProtos.FileDescriptorProto =
 DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
 val fileDescriptor =
 Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, arrayOfNulls(0))
 val messageDescriptor = fileDescriptor.messageTypes[0] val buffer =
 pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder =
 DynamicMessage.newBuilder(messageDescriptor)
 messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() val
 text: String = TextFormat.printToString(message)*

 Above code is throwing error in parsing step,* Protocol message tag
 had invalid wire type.*

 Thanks in advance.

 --
 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+u...@googlegroups.com.
 To view this discussion on the web visit
 https://groups.google.com/d/msgid/protobuf/7fe3a019-e846-4792-8d8a-1655a2d93975n%40googlegroups.com
 
 .

>>> --
>> 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/5042e4c5-2643-4587-812a-730206f14424n%40googlegroups.com
>> 
>> .
>>
> --
> 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/CABaCSzEG%2B19VhXjsYJpphbxA%2B3s7mAmUSiDF_Kmkkr5_Y0A%3Dsg%40mail.gmail.com
> 

Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-23 Thread ritesh singh
Also does it matter if .pb was created using proto lite and android end.

I believe the lite version doesn't store fields, so converting it to json
using proto-util won't work and i need to make use of reflection.

On Fri, 24 Feb, 2023, 6:54 am ritesh singh,  wrote:

> Thanks Adam. I will give it a shot. I thought of using *protoc*
> compiler, but what if my proto file contains nested messages
>
>
>
>
> *message A {  B b = 1}*
> *message B {*
> *}*
>
>
> After running *protoc *on the proto file, it will generate 2 java
> classes. I won't know which generated class to use against my .pb file, as
> my plugin is only aware of .pb and .proto file.
>
> Please correct me, if am wrong.
> On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette wrote:
>
>> I suspect that your code is getting an error because it's trying to parse
>> a .proto file as a serialized protocol buffer. (This won't work since
>> .proto files use a text representation very different from the standard
>> protobuf binary format.) Probably the best way to fix this problem would be
>> to invoke protoc with --descriptor_set_out to parse the proto file and
>> convert it into a serialized FileDescriptorSet. A FileDescriptorSet is just
>> a protocol buffer, so once you have it in that form you can easily parse it
>> like you would parse any other serialized proto.
>>
>> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  wrote:
>>
>>> Hello,
>>>
>>> I am working on creating a Android Studio plugin for proto data store.
>>> Android uses proto-lite, my current approach, i get the .pb file and
>>> .proto file and use the same in intellij plugin to deserialise it.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *val psiFile = PsiManager.getInstance(project).findFile(protoFile) val
>>> protoFileContent = psiFile!!.text val fileDescriptorProto:
>>> DescriptorProtos.FileDescriptorProto =
>>> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
>>> val fileDescriptor =
>>> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, arrayOfNulls(0))
>>> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer =
>>> pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder =
>>> DynamicMessage.newBuilder(messageDescriptor)
>>> messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() val
>>> text: String = TextFormat.printToString(message)*
>>>
>>> Above code is throwing error in parsing step,* Protocol message tag had
>>> invalid wire type.*
>>>
>>> Thanks in advance.
>>>
>>> --
>>> 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+u...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/protobuf/7fe3a019-e846-4792-8d8a-1655a2d93975n%40googlegroups.com
>>> 
>>> .
>>>
>> --
> 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/5042e4c5-2643-4587-812a-730206f14424n%40googlegroups.com
> 
> .
>

-- 
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/CABaCSzEG%2B19VhXjsYJpphbxA%2B3s7mAmUSiDF_Kmkkr5_Y0A%3Dsg%40mail.gmail.com.


Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-23 Thread ritesh singh
Thanks Adam. I will give it a shot. I thought of using *protoc*  compiler, 
but what if my proto file contains nested messages




*message A {  B b = 1}*
*message B {*
*}*


After running *protoc *on the proto file, it will generate 2 java classes. 
I won't know which generated class to use against my .pb file, as my plugin 
is only aware of .pb and .proto file.

Please correct me, if am wrong.
On Friday, February 24, 2023 at 6:42:05 AM UTC+5:30 Adam Cozzette wrote:

> I suspect that your code is getting an error because it's trying to parse 
> a .proto file as a serialized protocol buffer. (This won't work since 
> .proto files use a text representation very different from the standard 
> protobuf binary format.) Probably the best way to fix this problem would be 
> to invoke protoc with --descriptor_set_out to parse the proto file and 
> convert it into a serialized FileDescriptorSet. A FileDescriptorSet is just 
> a protocol buffer, so once you have it in that form you can easily parse it 
> like you would parse any other serialized proto.
>
> On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  wrote:
>
>> Hello, 
>>
>> I am working on creating a Android Studio plugin for proto data store.
>> Android uses proto-lite, my current approach, i get the .pb file and 
>> .proto file and use the same in intellij plugin to deserialise it.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *val psiFile = PsiManager.getInstance(project).findFile(protoFile) val 
>> protoFileContent = psiFile!!.text val fileDescriptorProto: 
>> DescriptorProtos.FileDescriptorProto = 
>> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
>>  
>> val fileDescriptor = 
>> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, arrayOfNulls(0)) 
>> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer = 
>> pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder = 
>> DynamicMessage.newBuilder(messageDescriptor) 
>> messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() val 
>> text: String = TextFormat.printToString(message)*
>>
>> Above code is throwing error in parsing step,* Protocol message tag had 
>> invalid wire type.*
>>
>> Thanks in advance.
>>
>> -- 
>> 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+u...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/protobuf/7fe3a019-e846-4792-8d8a-1655a2d93975n%40googlegroups.com
>>  
>> 
>> .
>>
>

-- 
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/5042e4c5-2643-4587-812a-730206f14424n%40googlegroups.com.


Re: [protobuf] Protocol message tag had invalid wire type.

2023-02-23 Thread 'Adam Cozzette' via Protocol Buffers
I suspect that your code is getting an error because it's trying to parse a
.proto file as a serialized protocol buffer. (This won't work since .proto
files use a text representation very different from the standard protobuf
binary format.) Probably the best way to fix this problem would be to
invoke protoc with --descriptor_set_out to parse the proto file and convert
it into a serialized FileDescriptorSet. A FileDescriptorSet is just a
protocol buffer, so once you have it in that form you can easily parse it
like you would parse any other serialized proto.

On Thu, Feb 23, 2023 at 4:59 PM ritesh singh  wrote:

> Hello,
>
> I am working on creating a Android Studio plugin for proto data store.
> Android uses proto-lite, my current approach, i get the .pb file and
> .proto file and use the same in intellij plugin to deserialise it.
>
>
>
>
>
>
>
>
>
>
>
>
> *val psiFile = PsiManager.getInstance(project).findFile(protoFile) val
> protoFileContent = psiFile!!.text val fileDescriptorProto:
> DescriptorProtos.FileDescriptorProto =
> DescriptorProtos.FileDescriptorProto.parseFrom(protoFileContent.byteInputStream())
> val fileDescriptor =
> Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, arrayOfNulls(0))
> val messageDescriptor = fileDescriptor.messageTypes[0] val buffer =
> pbFile.contentsToByteArray() val messageBuilder: DynamicMessage.Builder =
> DynamicMessage.newBuilder(messageDescriptor)
> messageBuilder.mergeFrom(buffer) val message = messageBuilder.build() val
> text: String = TextFormat.printToString(message)*
>
> Above code is throwing error in parsing step,* Protocol message tag had
> invalid wire type.*
>
> Thanks in advance.
>
> --
> 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/7fe3a019-e846-4792-8d8a-1655a2d93975n%40googlegroups.com
> 
> .
>

-- 
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/CADqAXr7uOTgCL-8Qf7UTZaekpNjo1A%2BgOT_c2-6yQnssfkQGNQ%40mail.gmail.com.