Re: [protobuf] How do I create a field mask for a field of a repeated field?

2018-02-20 Thread 'Feng Xiao' via Protocol Buffers
On Sun, Feb 18, 2018 at 9:05 PM Shelley Tong 
wrote:

> Let's say you have a proto defined as the following:
>
> message Zoo {
> repeated Cat cats = 1;
> }
>
> Let's say cat looks like this:
>
> message Cat {
> google.protobuf.StringValue name = 1
> Decimal age = 2;
> }
>
> If I want to reduce the amount of data in Zoo such that sample data only
> contains Cat with only the name field, how do I do that?
>
> Example: A sample Zoo object will look like this:
>
> {
> Cat: [{
> name = "sam";
> },
> {
> name = "hester";
> }]
> }
>
> I'm trying to do this with one field mask:
>
> FieldMask zoo_mask = FieldMask.newBuilder()
> .addPaths("cats")
> .build();
>
> Zoo getMaskedZoo(FieldMask mask, Zoo zoo) {
> Zoo.Builder zooDest = Zoo.newBuilder();
> FieldMaskUtil.merge(zoo_mask, zoo, zooDest);
> return zooDest.build();
> }
>
> How do I make it so that only the name displays for each Cat?
>
This is not supported at the moment, i.e., you can't use 'cats.name' in the
FieldMask because 'cats' is a repeated field. FieldMaskUtil is more of a
helper utility for a specific use case of protobuf. In your case, I think
you can simply use protobuf reflection API to do the same.

> --
> 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 post to this group, send email to protobuf@googlegroups.com.
> 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 protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.


[protobuf] How do I create a field mask for a field of a repeated field?

2018-02-18 Thread Shelley Tong


Let's say you have a proto defined as the following:

message Zoo {
repeated Cat cats = 1;
}

Let's say cat looks like this:

message Cat {
google.protobuf.StringValue name = 1
Decimal age = 2;
}

If I want to reduce the amount of data in Zoo such that sample data only 
contains Cat with only the name field, how do I do that?

Example: A sample Zoo object will look like this:

{
Cat: [{
name = "sam";
},
{
name = "hester";
}]
}

I'm trying to do this with one field mask:

FieldMask zoo_mask = FieldMask.newBuilder()
.addPaths("cats")
.build();

Zoo getMaskedZoo(FieldMask mask, Zoo zoo) {
Zoo.Builder zooDest = Zoo.newBuilder();
FieldMaskUtil.merge(zoo_mask, zoo, zooDest);
return zooDest.build();
}

How do I make it so that only the name displays for each Cat?

-- 
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 post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.