Расширение XJ C для интеллектуального расширения суперкласса в сгенерированном коде - PullRequest
0 голосов
/ 18 апреля 2020

сообщество!

Я генерирую Java классы на основе схемы от третьей стороны, которая определяет TENS идентичных типов, но каждый из этих типов определяется как уникальный, отдельный тип. Таким образом, он генерирует много операций, которые будут иметь одинаковую подпись, но примут другой тип в качестве запроса и другой тип в качестве ответа:

ResponseA operationA(RequestA request); 
ResponseB operationB(RequestB request); 
ResponseC operationC(RequestC request); 

все эти типы RequestX идентичны. То же самое касается типов ResponseX. Теперь я даже не могу их параметризовать, поскольку ни один из них не расширяет ничего. Если бы только они были объявлены наследующими одного и того же предка, который содержал бы все «внутренности» типа, это было бы намного проще.

Я погуглил и нашел «xj c: superClass», но это работает на ВСЕХ классах в схеме b) расширяет все сгенерированные классы на некоторые предоставленные классы, но не изменяет ничего в определениях классов в противном случае.

Можно ли найти другое расширение JAXB, которое позволило бы мне сделать выше? Или это можно определить? В противном случае, что бы предложить курс действий?

В настоящее время я могу думать только о 3-х вариантах (не включая те, что выделены выше): - принимать вещи такими, какие они есть, и просто писать тонны дублированного кода для этих моделей и вызовов - фиксировать классы, созданные XJ C как «обычный исходный код» и обновляйте его так, чтобы он соответствовал тому, что мне нужно (что я на самом деле не хочу делать, поскольку сторонние организации могут обновлять свои схемы время от времени, но, вероятно, это наиболее привлекательный вариант atm) - реализовать некоторый грубый и сложный код генерация с чем-то вроде JavaParser (или, что не так сильно, просто используйте отражение для отображения)

любые предложения высоко ценятся!

...