Ich habe dieses Problem:Jax.rs: Was ist die Null-Länge-Darstellung eines Objekts?
Wir haben eine JAX.RS api wie folgt aus:
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Path("get")
public User get(@QueryParam(value = "id") String identifier) {
return toUser(getUserEntry(identifier));
}
Die touser() -Methode kann null zurück, was in der Praxis bedeutet, dass der Kunde einen 204 sehen - Keine Inhaltsantwort.
nun auf der Client-Seite sieht mein Code wie folgt aus:
getWebTarget("user")
.path("get")
.queryParam("id", identifier)
.request(getMediaType())
.get()
.readEntity(SsoUser.class);
ich die readEntity erwartete() eine Art von Ausnahme zu werfen, aber es gibt tatsächlich null und beschwert sich nicht.
am documentation Sehen, sehe ich:
für eine Null-Länge Antwort Entitäten gibt ein entsprechendes Java-Objekt, das die Länge Null Daten darstellt. Falls für den Java-Typ keine Zero-Length-Repräsentation definiert ist, wird eine ProcessingException ausgelöst, die die zugrunde liegende NoContentException umhüllt.
So scheint es, dass meine User
Klasse eine "Null-Länge-Darstellung" definiert. Aber ich kann nirgendwo in der Dokumentation finden, was diese Darstellung bedeutet.
Ich kann verstehen, wie Java könnte daraus folgern, dass die Null-Länge-Darstellung ist null, aber ich weiß nicht, wo das zu definieren.
Einsicht auf das?