Используя SOAP-клиент, я могу получить корректную сортировку, но не отменять маркер в другом конце. Поэтому для этой цели я тестировал с помощью SOAP UI, вызывающего этот метод с аргументом «2013-05».аргумент метода JodaTime игнорируется с помощью JAXB в веб-методе
Точка останова в веб-методе findByYearMonth показывает текущее значение даты, и я также вижу, что базовый конструктор YearMonth вызывается связыванием JAXB (поэтому я получаю 2014-02).
//The class with the web method
@Component
@Qualifier("myFacade")
@XmlJavaTypeAdapter(YearMonthAdapter.class)
@Service
public class myFacade implements IMyFacade {
/*the web method */
findByYearMonth(YearMonth yearMonth) throws MyException {
// Break point here shows yearMonth = "2014-02"
}
}
адаптер:
/**
* The YearMonth adapter.
*
* XmlAdapter for YearMonth
*/
public class YearMonthAdapter extends XmlAdapter<String, YearMonth> {
@Override
public YearMonth unmarshal(String v) throws Exception {
return YearMonth.parse(v);
}
@Override
public String marshal(YearMonth v) throws Exception {
return v.toString();
}
}
Если годМесяц находится внутри DTO, и я прохожу, что в качестве аргумента он правильно работает - до тех пор, как у меня есть файл package-info.java в правильном пути , Я пробовал много комбинаций и разных аннотаций, а также имел следующий файл package-info.java в том же пакете, что и класс, содержащий веб-метод, но мне не повезло, что веб-метод получил правильное значение.
//package-info.java
@XmlJavaTypeAdapter(type = YearMonth.class, value = YearMonthAdapter.class)
package uk.co.imperatives.billing.core.summary;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.joda.time.YearMonth;
import uk.co.imperatives.billing.api.util.YearMonthAdapter;