XMLAdapter для HashMap

Я хочу преобразовать список элементов внутри моего payaload и преобразовать их в хэш-карту. По сути, у меня есть XML-представление Item со списком ItemID. Каждый ItemID имеет в себе idType. Однако внутри моего класса Item я хочу, чтобы эти идентификаторы ItemID были представлены в виде карты.

HashMap<ItemIDType, ItemID>

Входящая полезная нагрузка будет представлять это как список

<Item>...
    <ItemIDs>
       <ItemID type="external" id="XYZ"/>
       <ItemID type="internal" id="20011"/>
    </ItemIDs>
</Item>

, но мне нужен адаптер, который преобразует это в HashMap

"external" => "xyz"
"internal" => "20011"

Я сейчас использую LinkedList

public class MapHashMapListAdapter extends XmlAdapter<LinkedList<ItemID>, Map<ItemIDType, ItemID>> {

     public LinkedList<ItemID> marshal(final Map<ItemIDType, ItemID> v) throws Exception { ... }

     public Map<ItemIDType, ItemID> unmarshal(final LinkedList<ItemID> v) throws Exception { ... }

}

, но по какой-то причине, когда моя полезная нагрузка конвертируется, он не может преобразовать список в хэш-карту. Входящий LinkedList метода unmarshal - это пустой список. Вы хоть представляете, что я здесь делаю не так? Нужно ли мне создавать здесь свой собственный тип данных для обработки LinkedList?

6
задан denniss 11 February 2011 в 23:24
поделиться