How to add specific missing fields to a Protobuf object by comparing with a FieldMask

38 Views Asked by At

I am trying to use protobuf merge method to create a destination destination_GeneratedMessageV3 from source_GeneratedMessageV3 using FieldMask

FieldMaskUtil.merge(fieldMask, source_GeneratedMessageV3, destination_GeneratedMessageV3);

The FieldMask is

paths: "ad_group_ad.ad.id"
paths: "campaign.id"
paths: "ad_group.id"
paths: "ad_group_ad.ad.url_custom_parameters"
paths: "segments.date"

source_GeneratedMessageV3 is

campaign {
  resource_name: "customers/3091028620/campaigns/388224072"
  id: 111
}
ad_group {
  resource_name: "customers/3091028620/adGroups/1313"
  id: 222
}
ad_group_ad {
  resource_name: "customers/1212/adGroupAds/434~343"
  ad {
    resource_name: "customers/165/ads/876"
    id: 876
  }
}
segments {
  date: "2023-05-01"
}

The generated destination_GeneratedMessageV3 is

campaign {
  id: 111
}
ad_group {
  id: 222
}
ad_group_ad {
  ad {
    resource_name: "customers/165/ads/876"
    id: 876
  }
}
segments {
  date: "2023-05-01"
}

I want in the destination_GeneratedMessageV3 the field mask parameter "ad_group_ad.ad.url_custom_parameters" should be added with value as blank string ("") when its not present in source_GeneratedMessageV3

How can I achieve this?

0

There are 0 best solutions below