sto consumando un payload XML che sembra qualcosa di simile (per un esempio più completo, check out: http://api.shopify.com/product.html).XStream - Root come un insieme di oggetti
<products type="array">
<product>
...
</product>
<product>
...
</product>
</products>
Ora Attualmente il mio codice funziona, ma il suo fare qualcosa che sembra essere davvero "sbagliato" - vale a dire associa i "prodotti" con List.class. Così il relativo codice è simile al seguente:
xstream.alias("products", List.class);
xstream.alias("product", ShopifyProduct.class);
Questo è bene, tranne quando ho goto esternare qualsiasi oggetto con tale istanza xstream utilizza sempre "prodotti", naturalmente, che non è quello che voglio.
mi piacerebbe essere sia in grado di mappare le collezioni generiche a un tag:
xstream.alias("products", (List<ShopifyProduct>).class); // way too easy
O ottenere la seguente snipet al lavoro, che non lo fa al momento:
ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());
mapper.addClassAlias("product", ShopifyProduct.class);
xstream.registerLocalConverter(ShopifyProductResponse.class, "products", new CollectionConverter(mapper));
I ha creato la classe ShopifyProductResponse per provare a includere ShopifyProduct, ma non ha nulla di tutto ciò che mi dice:
com.thoughtworks.xstream.mapper.CannotResolveClassException: prodotti: prodotti a com.thoughtworks.xstream.mapper.DefaultMapper.realClass (DefaultMapper.java:68) a com.thoughtworks.xstream.mapper.MapperWrapper.realClass (MapperWrapper.java:38)
se aggiungo:
indietro poi va via ... quindi mi sembra che il mapperwrapper non stia prendendo piede qui - probabilmente perché è alla ricerca di un oggetto ShopifyProductResponse e trovare invece una lista - Io davvero non lo so.
sembra buono, non mi piace molto l'idea di avere un oggetto wrapper in più in giro per questo, ma funziona come previsto e questo è quello che conta davvero, a questo punto - grazie! – Lypheus