@XmlRootElement(name = "bookingSystem")
public class BookingSystem {
@XmlJavaTypeAdapter(StringMapAdapter.class)
private Map<String, HashMap<String, PriorityQueue<DateTime>>> takerMap
= new HashMap<String, HashMap<String, PriorityQueue<DateTime>>>();
...
адаптер:
public class StringMapAdapter
extends XmlAdapter<StringMapConverter, Map<String, StringPQueueMap>> {
@Override
public StringMapConverter marshal(Map<String, StringPQueueMap> mapToConvert) throws Exception {
StringMapConverter myMapType = new StringMapConverter();
for (Entry<String, StringPQueueMap> entry : mapToConvert.entrySet()) {
StringMap myMapEntryType = new StringMap();
myMapEntryType.key = entry.getKey();
myMapEntryType.value = (Map<String, StringPQueueMap>) entry.getValue();
// **Problem occurs here**
myMapType.entry.add(myMapEntryType);
}
return myMapType;
}
с проблемой, возникающей в myMapType.entry.add(myMapEntryType);
, где StringPQueueMap является следующим:
public class StringPQueueMap {
@XmlAttribute
public String key;
@XmlElement(name = "StringPQueueMapObject")
public PriorityQueue<DateTime> value;
}
и для обоихкарты У меня есть классы конвертера, которые выглядят одинаково, за исключением имени StringMap или StringPQueueMap
@XmlElementWrapper(name = "bookingMapWrapper")
public List<StringMap> entry =
new ArrayList<StringMap>();
public List<StringMap> getMyMapType() {
return this.entry;
}
, и это вызывает следующее исключение: javax.xml.bind.MarshalException - with relatedисключение: [com.sun.istack.internal.SAXException2: класс java.util.PriorityQueue, ни один из его суперклассов не известен этому контексту. javax.xml.bind.JAXBException: класс java.util.ПриоритетQueue, ни какой-либо из его суперкласса не известен этому контексту.] На com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java:311) на com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal (MarshallerImpl.java:236) в javax.xml.bind.helpers.AbstractMarshallerImpl.marshal (AbstractMarshallerImpl.java:103)
Я совершенно неопытен с использованием JAи XML-файлы в целомЯ, с некоторыми уроками, мне удалось все уладить, пока я картирую Карту, но, похоже, это не работает с PriorityQueue.Я подозреваю, что это может иметь место и с объектами DateTime (библиотекой jodatime), если я предполагаю, что они не являются причиной или, по крайней мере, частью этой проблемы.Может ли кто-нибудь предложить какой-либо совет о том, как это исправить, моя цель состоит в том, чтобы упаковать этот довольно сложный пользовательский объект в файл XML, а затем иметь возможность его разархивировать (хотя я полагаю, что смогу разобраться с демаршалингом, если мне удастся заставить маршалинг работать должным образом).