Jak pobrać gotowe obiekty z Rest serwisów zwracających XML.

0

Cześć,

Potrzebuję pomocy z pewnym zadaniem. Mam dwa Rest serwisy, które zwracają XML. Jeden zwraca listę "users" a drugi "accounts". Może najpierw pokaże jak sobie to zorganizowałem... będzie lepiej zrozumieć problem.


@XmlRootElement(name = "users")
public class UserResponse {
	
	@XmlElement(name = "user")
	private List<User> user = new ArrayList<User>();
}

@XmlRootElement(name = "accounts")
public class AccountResponse {
	
	@XmlElement(name = "account")
	private List<Account> accounts = new ArrayList<Account>();
}

@XmlRootElement(name = "user")
class User {
	@XmlAttribute(name = "id")
	private int id;
	@XmlElement(name = "name")
	private String name;
	@XmlElement(name = "surname")
	private String surname;
	@XmlElement(name = "accountId")
	private int accountId;
}

@XmlRootElement(name = "accounts")
class Account {
	// metody i pola...
}

Kod działa, ale jedna rzecz mi nie pasuje... mam w klasie User pole accountId a wolał bym posiadać pole typu Account, ale teraz nie wiem jak to ogarnąć, żeby dobrze to zmapować.

Teraz po odpytaniu serwisu o użytkowników, następnie muszę odpytać inny serwis o listę kont i dzięki temu, że w klasie User mam pole accountId to mogę powiązać użytkowników z ich kontami. Problem w tym, że mam teraz nie potrzebne pole accountId typu int a lepiej był by posiadać pole typu Account...

Kurcze czuję, że się nie wysłowiłem :-) Jak coś to dajcie znać to postaram się jakoś lepiej ująć problem.

1

Musisz zmienić mapowanie tak by obsługiwało xmlową "magię" zwaną id ref. Dokładniejszy opis > http://blog.bdoughan.com/2010/10/jaxb-and-shared-references-xmlid-and.html

W skrócie zamiast int accountId musisz mieć Account account z adnotacją @XmlIDREF i w klasie Account na polu id adnotacje @XmlID.

1 użytkowników online, w tym zalogowanych: 0, gości: 1