Мы используем jaxb2 для генерации кода Java из определений схемы xml для некоторых внешних данных. Проект довольно старый и использовал maven-jaxb-plugin 1.1.1. Мы хотим перейти на jaxb2-maven-plugin, который также будет использовать jaxb2, но мы обнаружили некоторые отличия в сгенерированном коде. В частности, у нас есть атрибуты в виде
<xsd:attribute name="num" type="xsd:int" use="optional">
которые сопоставляются с Integer
полями в сгенерированном коде.
@XmlAttribute(name = "num")
protected Integer num;
Однако jaxb2 генерирует геттеры и сеттеры с примитивным типом вместо нулевых типов:
public int getNum() {
return num;
}
public void setNum(int value) {
this.num = value;
}
public boolean isSetNum() {
return (this.num!= null);
}
public void unsetNum() {
this.num = null;
}
Однако наш текущий код предполагает, что getNum
возвращает упакованный тип, допускающий значение null, а также проверяет это в модульных тестах, которые завершаются ошибкой с исключением нулевого указателя.
Есть ли способ генерировать геттеры/сеттеры с нулевыми типами для необязательных атрибутов? Файлы xsd предоставляются внешним поставщиком, поэтому я бы предпочел не изменять их. Мы не устанавливаем optionalProperty
в <globalBindings>
, поэтому по умолчанию используется значение wrapper
.