2011-07-16 41 views
1

假設我遵循HATEOAS並在我的XML中使用超文本。事情是這樣的:使用JAXB或類似的東西自動填充HATEAOS鏈接?

/客戶/ 32

<Customer> 
    <FirstName>Joe</FirstName> 
    <LastName>Smith</LastName> 
    <Address href="/address/4324"> 
</Customer> 

/地址/ 4324

<Address> 
    <Street>123 Fake St</Street> 
    <Town>Springfield</Town> 
</Address> 

是否有一個庫類似於或JAXB的擴展,它可以解組一個客戶,並自動查詢並解除地址作爲該客戶的財產(如customer.getAddress().getStreet())?如果沒有,那麼這對於客戶端緩存有什麼好處呢?

+1

你是怎麼生成的地址類href屬性? – craig

回答

3

在JAXB中,您可以爲此用例使用XmlAdapter。 XmlAdapter將指定值類型字符串和綁定類型地址。你會添加邏輯在它們之間進行轉換。

獲取更多信息

+0

如果我正在用XJC生成我的課程,那是否會起作用?我需要一個鏈接/地址選擇的模式元素嗎?或者模式只需要匹配轉換後的狀態? – jiggy

+0

@Jiggy - 我會建議修改生成的源代碼以添加到XmlAdapter中。 –

+0

@BlaiseDoughan,讓我確定我明白了。 Customer類有一個getAddress()方法; getAddress()方法具有@XmlJavaTypeAdapter(AddressAdapter.class)註釋; Address類的屬性被註釋爲@XmlElement和@XmlValue。過程:AddressAdapter.unmarshall()方法使GET調用/ address/4324來獲取XML呈現,生成/返回Address類的一個實例,然後通過getStreet()返回街道。它是否正確? – craig

相關問題