我目前正試圖使用Glassfish 4(使用Jersery 2.0和EclipseLink 2.5)解組通過REST PUT提供的JSON對象。使用JAX-RS和MOXy處理無效枚舉
JSON對象由多個屬性組成,包括一個映射到Java Enum的String值。
一切工作爲當在有效負載中輸入了無效的ENUM值從預期開
JSON對象:
{
"rating":"INVALID",
...
}
被解組成:
public RatingInfo {
@ValidRating
private Rating rating;
...
public Rating getRating(){...}
public void setRating(Rating rating){...}
...
}
public enum Rating {
G,
PG
}
如果該值在JSON有效負載中不是有效的額定值,它當前返回空值,這似乎是JAXB忽略轉換錯誤的結果,請參見Handling invalid enum values while doing JAXB Unmarshalling
問題是我需要區分Rating實際爲null(這是有效的用例)與JSON中的Rating值無效的情況,以便我可以在REST響應中返回400錯誤。
我無法弄清楚如何做的是覆蓋忽略使用JAX-RS和MOXY作爲默認提供程序時的轉換錯誤的默認行爲。
我已經厭倦了。問題在於適配器中拋出的任何異常都被JAXB吞噬,就像上面的轉換錯誤一樣。 – lucasweb