ПриоритетQueue сортировки с JAXB - PullRequest
0 голосов
/ 19 февраля 2019
@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, а затем иметь возможность его разархивировать (хотя я полагаю, что смогу разобраться с демаршалингом, если мне удастся заставить маршалинг работать должным образом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...