Прото 3. Способ добавления метаданных на уровне поля - PullRequest
2 голосов
/ 05 марта 2020

Я использую protobuf-gradle-plugin для генерации java класса из файлов прото.

Мой файл протока выглядит как

syntax = "proto3";

package com.address;
option java_package = "com.address";


message AddressesMessage {
 int32 id = 1;
 string address_line_1 = 4;
 string address_line_2 = 5;
 string city = 7;
 string postal_code = 9;
 string country = 10;
}

Плагин генерирует классы для меня, но Теперь я хочу добавить информацию метаданных на уровне поля. Как

syntax = "proto3";

package com.address;
option java_package = "com.address";


message AddressesMessage {
 int32 id = 1 [ (meta) = { isfact: false }];
 string address_line_1 = 4;
 string address_line_2 = 5;
 string city = 7;
 string postal_code = 9;
 string country = 10;
}

Возможно ли это?

1 Ответ

1 голос
/ 05 марта 2020

Да, это возможно через пользовательских опций , но: вам нужно определить ваших пользовательских опций в отдельной схеме proto2, которую затем импортирует схема proto3.

Что-то вроде (для вашей схемы proto2, не проверено):

syntax = "proto2";
import "google/protobuf/descriptor.proto";
package MetaPackage;
message MyMeta {
  optional bool isFact = 1;
}
extend google.protobuf.FieldOptions {
  optional MyMeta meta = 80412; // numbering: search for "One last thing" in the link above
}

, затем просто добавьте:

import "MyMeta.proto";

к вашей схеме proto3, и она должна Работа. Однако доступ к метаданным - это еще одна топика Смотрите ссылку выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...