2015-12-30 1 views
0

Je possède ce service simple qui fait écho à un paramètre d'ID enveloppé dans un objet JSON:Comment faire Enunciate afficher mon type de données en tant que JSON structuré (au lieu de "personnalisé")?

@Path("job") 
public class JobResource { 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("{id}") 
    public Job readById(@PathParam("id") long id) { 
     Job j = new Job(); 
     j.id = id; 
     return j; 
    } 

} 

Job de la valeur de retour de classe est déclarée comme:

public class Job { 
    public long id; 
} 

La documentation générée avec Enunciate montre les données du service tapez "custom". Est-il possible que Enunciate crache une explication plus détaillée du type de retour, par exemple une représentation JSON?

Répondre

0

Si vous modifiez le type de retour à javax.ws.rs.core.Response, la documentation doit alors afficher le type de données en tant que JSON.

Vous devrez modifier légèrement votre méthode que:

... 
return Response.status(Status.OK).entity(j).build(); 
0

Ajouter une annotation à la classe d'emploi

@javax.xml.bind.annotation.XmlRootElement 

Sans cette annotation l'enunciate affiche le DTO comme « coutume » ou « fichier "

0

J'ai eu exactement le même problème avec un simple service web REST Jersey.

Voici les annotations de mon objet retourné (pas plus):

 

    @XmlRootElement(name = "OReponseInitialiser") 
    @XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) 
    @XmlType (name="OReponseInitialiser") 
    public class OReponseInitialiser 

Et la déclaration webservice:

 

     @POST 
     @Consumes(MediaType.APPLICATION_JSON) 
     @Produces(MediaType.APPLICATION_JSON) 
     @Path ("initialiser") 
     public OReponseInitialiser initialiser(@Context HttpServletRequest pRequete, ...) throws OException 

Je construis la documentation avec la tâche de fourmi

<enunciate 
    basedir="${projet.repertoire}/src" 
    buildDir="${enunciate.working.dir}" 
    javacSourceVersion="1.8" 
    javacTargetVersion="1.8" 
    configFile="${projet.repertoire}/build_enunciate.xml" 
    > 
    <include name="**/*.java"/> 
    <classpath refid="compile.classpath"/> 
    <export artifactId="docs" destination="${docs.dir}"/> 
</enunciate>