У меня есть вопрос об упаковке класса, созданного в jaxb, и я действительно хотел бы услышать ваши комментарии.
Мой xsd выглядит примерно так:
<ComplexService>
<ComplexObject1>
<Element1></Element1>
<Parameter></Parameter>
</ComplexObject1>
<ComplexObject2>
<Element2> </Element2>
<Parameter> </Parameter>
</ComplexObject2>
...
<ComplexObject10>
<Element10> </Element10>
<Parameter> </Parameter>
</ComplexObjec10>
Класс, созданный после запуска вышеуказанного xsd через xjc, выглядит примерно так:
public class ComplexService{
ComplexObject1 object1;
ComplexObject2 object2;
...
ComplexObject10 object10;
public static class ComplexObject1{
//Accessors and mutators on ComplexObject1
}
public static class ComplexObject2{
//Accessors and mutators on ComplexObject1
}
...
public static class ComplexObject10{
//Accessors and mutators on ComplexObject1
}
}
Теперь я хочу создать обертку вокруг этих объектов CompleObject, а также класса ComplexService.
public class WrappedComplexObject1{
private final ComplexObject1;
public WrappedComplexObject1(){
complexObject1 = new ComplexObject1();
}
//Delegate calls to the underlying ComplexObject1
public String getServiceName(){
return complexObject1.getServiceName();
}
}
Вот мои вопросы:
Будет ли вышеуказанный способ предпочтительным способом обернуть класс? Мои цели - не связываться с базовыми классами, созданными xjc; для обеспечения лучшего имени api (класса, а также имена методов).
Я также хочу проверить данные в этих объектах. Поэтому я думаю об использовании
шаблон декоратора для дальнейшей упаковки WrappedComplexObject1. Это рекомендуемый подход?
Наконец, xsd содержит элемент «Параметр», который является структурно одинаковым (только содержит одно поле значения). Однако когда xjc создал класс ComplexService, для каждого ComplexObject был создан новый класс Parameter.
Должен ли я беспокоиться о том, чтобы иметь только один класс-обертку для «Параметра», или мне просто нужно создать один класс-обертку для параметра для ComplexObject.
Любые предложения, идеи, примеры кода будут наиболее полезными.
Спасибо