2017-10-12 4 views
-1

le code Supposer comme,Comment convertir un chemin param en classe dans JAX-RS?

@Path("/app/{resource}") //Suppose resource comes as Apple or Mango. 
@Produces(value=MediaType.APPLICATION_JSON)  
public class AppResource { 

    @GET 
    public Response getResource(@PathParam("resource") String resource) { 
    // Here want to convert resource to Apple or Mango class so that I can create a List<Apple> or List<Mango>. 
    } 
} 

Fondamentalement, je veux une liste générique Liste < d'Apple > Liste <Mango> selon la uri, tout ce qui vient dans {} ressources.

+0

Puisque la réponse sera 'JSON', et qu'il n'y a aucun type, la' Liste 'est parfaitement bien. C'est à vous de ne mettre que des objets 'Apple' ou' Mango' dans la liste, si c'est ce qui est nécessaire. – Andreas

Répondre

0

Si vous voulez que votre code pour avoir des listes explicites List<Apple> et List<Mango>, alors vous devez écrire le code comme ceci:

@GET 
public Response getResource(@PathParam("resource") String resource) { 
    List<?> list; 
    switch (resource) { 
     case "apples": 
      list = getApples(); 
      break; 
     case "mangos": 
      list = getMangos(); 
      break; 
     default: 
      return Response.status(Status.NOT_FOUND).build(); 
    } 
    return Response.ok(list); 
} 

private List<Apple> getApples() { 
    List<Apple> appleList = new ArrayList<>(); 
    // add apples 
    return appleList; 
} 

private List<Mango> getMangos() { 
    List<Mango> mangoList = new ArrayList<>(); 
    // add mangos 
    return mangoList; 
} 

La clause default dans la déclaration switch assure qu'une demande de quelque chose comme /app/sailboats Échec avec une erreur 404 "Page introuvable".