2016-12-05 1 views
0

C'est ma première question, et je l'ai fait des recherches, mais na pas trouver la réponse ...résultat dynamique après une erreur (Liste ou objet)

Je développe actuellement un repos Webservice utilisant Resteasy. Cela fonctionne bien, mais j'ai un doute: il existe un moyen de retourner une liste ou un objet? Permettez-moi d'illustrer ceci: J'ai une méthode pour retourner une LISTE de SECTEURS appelée après avoir passé un jeton d'authentification. Si le jeton est OK - Il doit retourner la LISTE des secteurs. Si le jeton n'est pas OK - Il doit retourner une erreur qui est mappée à une classe appelée ErroGenerico qui est un OBJECT.

Comment puis-je faire cela? Renvoie l'OBJET OU la LISTE?

+0

font l'objet comme une exception et l'attraper en appelant le code – GurV

+0

Eh bien, si vous avez et exception, vous pouvez utiliser le code de résultat et retourner l'objet. Sur le client, en fonction du code, vous saurez si vous avez reçu une «liste» ou une «exception». – AxelH

+0

Vous ne devriez pas jeter l'exception dans les cas où cela peut être fait par d'autres moyens. Comme exception doit être utilisé dans des conditions qui ne peuvent pas être traitées – gladiator

Répondre

0

Vous pouvez essayer comme ci-dessous

//Not mandatory to create ListUser you can do without it oo just use arraylist directly 
class ListUser extends ArrayList<User> {} 

méthode webservice

@GET 
@Path("getObj/{param}") 
@Produces("application/json") 
public Response getObj(@PathParam("param") String msg) { 

    ListUser responses = new ListUser(); 
    responses.add(new User("1")); 
    responses.add(new User("2")); 
    responses.add(new User("3")); 
    if("list".equals(msg)) 
     return Response.status(200).entity(responses).build(); 
    User u=new User(); 
    u.setName("Developer"); 
    return Response.status(200).entity(u).build(); 


} 

code client

Client client = ClientBuilder.newClient(); 
    { 
     String url = "http://jerseyexample-ravikant.rhcloud.com/rest/jws/getObj/list"; 
     System.out.println(url); 
     Response response = client.target(url).request().get(); 
     ObjectMapper ob = new ObjectMapper(); 

     Object pojos = response.readEntity(Object.class); 
     System.out.println(pojos.getClass()); 
     if(pojos instanceof java.util.ArrayList){ 
      ArrayList<User> list = (ArrayList) pojos; 

      for (Object pojo : list) { 
       User user = ob.convertValue(pojo, User.class); 
       System.out.println(user.getName()); 
      } 
     }else{ 
      System.out.println("user"); 
      User user = ob.convertValue(pojos, User.class); 
     } 
     //System.out.println(response); 

    } 

Vous pouvez vérifier le service de travail à http://jerseyexample-ravikant.rhcloud.com/rest/jws/getObj/list

Ici au lieu de la liste en passant vous pouvez passer quoi que ce soit d'autre pour obtenir l'objet

En plus de cette réponse, je l'ai trouvé l'article et il a bien fonctionné.

resteasy response

1

Effectuez une exception personnalisée ErroGenerico et lancez-la si le jeton n'est pas vérifié.

donc, méthode:

public List<Something> getList(String token) throw ErroGenerico { 
// do stuff 
}