Thanks, works like a charm!
On Monday, July 6, 2015 at 6:13:33 PM UTC-3, Feng Xiao wrote: > > > > On Mon, Jul 6, 2015 at 11:23 AM, Edgard Lima <[email protected] > <javascript:>> wrote: > >> // my .proto >> syntax = "proto3";import "google/protobuf/any.proto"; >> message CommandListPrinters {} >> message Commands { >> int32 id = 1; >> repeated google.protobuf.Any command = 2;} >> >> // my.java >> >> CommandListPrinters commandListPrinters = >> CommandListPrinters.newBuilder().build();Any any = >> Any.newBuilder().setValue(commandListPrinters.toByteString()).build();Commands.Builder >> commandsBuilder = Commands.newBuilder().setId(0); >> commandsBuilder.addCommand(any);Commands commands = >> commandsBuilder.build();//byte [] ba = commands.toByteArray(); >> Commands cmds2 = Commands.parseFrom(ba);for (Any any2 : >> cmds2.getCommandList()) { >> Descriptor fe = any2.getDescriptorForType(); >> >> // This IF is FALSE; >> if (fe.equals(CommandListPrinters.getDescriptor()) ) { >> CommandListPrinters cmdLR = >> CommandListPrinters.parseFrom(any2.getValue()); >> } >> } >> >> We will add some helper functions in Java to ease the use of Any pretty > soon. For the time being you will probably use Any like this: > > String getTypeUrl(Descriptor descriptor) { > return "type.googleapis.com/" + descriptor.getFullName(); > } > > // Create Any message: > Any createAny(Message message) { > return Any.newBuilder() > .setTypeId(getTypeUrl(message.getDescriptorForType())) > .setValue(message.toByteString()) > .build(); > } > > CommandListPrinters commandListPrinters = > CommandListPrinters.newBuilder().build(); > Commands.Builder commandsBuilder = Commands.newBuilder().setId(0); > commandsBuilder.addCommand(createAny(commandListPrinters)); > Commands commands = commandsBuilder.build(); > > > for (Any any : commands.getCommandList()) { > if > (any.getTypeUrl().equals(getTypeUrl(CommandListPrinters.getDescriptor()))) { > CommandListPrinters cmdLR = > CommandListPrinters.parseFrom(any2.getValue()); > ... > } > } > > With the helper functions we will introduce soon, the code will be > simplified to this: > > > CommandListPrinters commandListPrinters = > CommandListPrinters.newBuilder().build(); > Commands.Builder commandsBuilder = Commands.newBuilder().setId(0); > commandsBuilder.addCommand(*Any.pack(commandListPrinters)*); > Commands commands = commandsBuilder.build(); > > > for (Any any : commands.getCommandList()) { > if (*any.is <http://any.is>(CommandListPrinters.getClass())*) { > CommandListPrinters cmdLR = > *any.unpack(CommandListPrinters.getClass())*; > ... > } > } > > -- >> 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] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://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 http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
