2016-12-02 2 views
1

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?

Antwort

-1

Ich könnte mich irren, aber ich glaube nicht, dass Jax-RS in der Lage ist, null Werte für Sie zu behandeln. Was Sie tun könnten, ist, diesen Fall explizit zu behandeln, z.

@GET 
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
@Path("get") 
public Response get(@QueryParam(value = "id") String identifier) { 
    User maybeNull = toUser(getUserEntry(identifier)); 
    Response response = null; 
    if(null == maybeNull) { 
     response = Response.noContent().build(); 
    } else {  
     response = Response.ok(maybeNull).build(); 
    } 
    return response; 
} 
Verwandte Themen