Код, прикрепленный ниже, вызывает спорадические сбои тестов (JUnit), работает в 80% случаев. Я использую статический объект Templates. В случае сбоя объект JAXB, отличный от ожидаемого, помещается в «результат» из вызова метода transform.transform(jaxbSource, result).
Пробовал блокировать и синхронизировать разделы тщетно. Также объект Templates должен быть потокобезопасным в соответствии со спецификацией. Что-то странное происходит в трансформации.
Симптом ошибки: сбой теста JUnit — внезапно из преобразования возвращается неправильный объект.
Есть идеи?
private <S, T> S transform(final Templates template, final Class resultClass, final T data) throws JAXBException, TransformerException {
Transformer transformer = template.newTransformer();
final JAXBSource jaxbSource = new JAXBSource(getCachedJAXBContext(data.getClass()), data);
final Result result = new JAXBResult(getCachedJAXBContext(resultClass));
transformer.transform(jaxbSource, result);
return (S) ((JAXBResult) result).getResult();
}
getCachedJAXBContext()
? Может ли это возвращать неправильный контент? Попробуйте записать/распечататьjaxbSource
перед трансформацией, чтобы убедиться, что вы трансформируете то, что, по вашему мнению, вы из себя представляете. - person Mads Hansen   schedule 11.03.2011