JAXB, пользовательские привязки, Adaptor1.class и Joda-timeJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JAXB, пользовательские привязки, Adaptor1.class и Joda-time

Сообщение Anonymous »

У меня проблема с тем, как JAXB генерирует связанные классы для схемы XML (который я не могу изменить ради точности).
Я хочу сопоставить тип xsd:date с объектом LocalDate времени Joda, и, прочитав здесь, здесь и здесь, я создал следующий класс DateAdapter:

Код: Выделить всё

public class DateAdapter extends XmlAdapter {
private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");

public LocalDate unmarshal(String v) throws Exception {
return fmt.parseLocalDate(v);
}

public String marshal(LocalDate v) throws Exception {
return v.toString("yyyyMMdd");
}
}
И я добавил следующее в свой файл глобальной привязки: Проблема в том, что когда я пытаюсь скомпилировать свой проект с помощью maven, возникает следующая ошибка:

Код: Выделить всё

[ERROR] \My\Path\MyProject\target\generated-sources\xjc\my\classes\generated\Adapter1.java:[20,59] non-static method unmarshal(java.lang.String) cannot be referenced from a static context
[ERROR] \My\Path\MyProject\target\generated-sources\xjc\my\classes\generated\Adapter1.java:[24,59] non-static method marshal(org.joda.time.LocalDate) cannot be referenced from a static context
...и здесь все становится странным.
JAXB генерирует класс Adaptor1, который содержит следующее:

Код: Выделить всё

public class Adapter1
extends XmlAdapter
{

public LocalDate unmarshal(String value) {
return (my.classes.adapters.DateAdapter.unmarshal(value));
}

public String marshal(LocalDate value) {
return (my.classes.adapters.DateAdapter.marshal(value));
}

}
....что является источником ошибки компиляции.
Теперь мои вопросы:
  • поскольку мой адаптер переопределяет XmlAdapter, я не могу сделать методы статическими, как мне этого избежать?
  • Могу ли я вообще избежать создания Adaptor1.class? Возможно, используя аннотацию XmlJavaTypeAdapters на уровне пакета, и если да, то как именно это сделать? (JAXB уже генерирует собственный package-info.java)


Подробнее здесь: https://stackoverflow.com/questions/125 ... -joda-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»