2009-04-21 3 views
1

У меня есть компонент Jibx, который используется как вход и выход в веб-сервис. Боб очень большой и сложный с глубокими родительскими отношениями с ребенком. Webservice не возвращает объект запроса, а возвращает новый компонент с некоторыми свойствами. Я хотел бы объединить мой запрос и ответ. Я попытался использовать Dozer (он просто заменяет мой объект запроса ответом, то есть исходные свойства запроса теряются! То же для BeanUtils.copyProperties). Граф объекта слишком большой и глубокий, чтобы выполнить проверку isNull по всем свойствам.Объединение боба в java

Я рассмотрел возможность преобразования bean-компонентов в XML-файлы и их слияния с использованием EL4J XML Merge любых других предложений.

ответ

2

«слишком большой и глубокий, чтобы выполнить проверку isNull». Я предполагаю, что вы не хотите жестко кодировать эти проверки. Вы тоже.

Тем не менее, прекрасная вещь о бобах заключается в том, что они могут быть проверены, и вы можете написать автоматическую проверку, чтобы проложить свой путь через граф объектов, проверить нуль и обновить, если нет.

Да, это интенсивность процессора. Но, конечно, не более интенсивный процессор, чем создание XML и попытка его слияния.

0

Как объект является bean-компонентом, почему бы не связать bean-компонент с запросом и при ответе использовать bean-компонент запроса? Я не выступаю за толкание объектов, которые могут быть просто объектами интерфейса в глубине вашей системы, но сохраняя компонент запроса и делая его компонентом ответа.

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

Другим подходом было бы упростить интерфейс, чтобы свойства в XML были схожи, а «глубина» удалена: чтобы все свойства были подобными, можно было бы управлять проверкой свойств и совокупностью с помощью простого цикла.

Преобразование в XML поражает объект, используя, в первую очередь, структуру. Возможно, если XML проще, Jibx не является самым простым решением проблемы. Что вы можете изменить в своей спецификации?