Как подключиться к grp c - java, чтобы изменить генерацию кода и добавить методы setNameOrClear (null)? - PullRequest
0 голосов
/ 01 мая 2020

У нас слишком много проблем вокруг всего этого дополнительного кода для каждого поля базы данных в отношении

if(databaseObj.getName() != null)
   builder.setName(databaseObj.getName());

, и я прочитал квадратный провод в protobuf, добавив методы setOrClear в java. Как нам это сделать, когда мы также генерируем с помощью gradle?

Мы сейчас используем код gradle с этой страницы ..

https://github.com/grpc/grpc-java

спасибо, Дин

1 Ответ

1 голос
/ 01 мая 2020

Вы можете выполнить sh через protoc_insertion_point с. Когда вы сгенерируете код Java, вы увидите комментарии типа // @@protoc_insertion_point(...). Вот где будет происходить вставка.

Несмотря на то, что этот подход полезен, он имеет серьезные недостатки для .protos, используемого в нескольких проектах. Все проекты, использующие одно и то же .proto и на одном и том же языке, должны использовать одни и те же плагины, в противном случае это вызывает проблему зависимости от алмаза . Вот почему gRP C действительно не использовал этот подход и вместо этого генерирует свои классы в отдельных файлах из обычной генерации сообщений. Я категорически не одобряю этот подход, так как он загоняет вас в угол, и вы не знаете, когда вам нужно будет «заплатить пайперу».

Чтобы вставить в точку, ваш плагин должен работать в тот же protoc вызов командной строки, что и встроенный java. Тогда вашему плагину потребуется установить CodeGeneratorResponse.file.insertion_point и content для каждого файла, в который вы хотите ввести код.

...