Antes leia:
TDSI – Web Services com GlassFish, JTA / JPA e JSON – parte 5
Como visto no artigo anterior, foi adicionado anotações Jackson na classes Marca.java e Modelo.java. Agora vamos utilizá-los no Web Service TdsiResource.java .
Abaixo como está o código TdsiResource.java: (imports estão omitidos)
package services; import ... @Path("tdsi") public class TdsiResource { @Context private UriInfo context; private final EntityManagerFactory factory; private final EntityManager manager; public TdsiResource() { factory = Persistence.createEntityManagerFactory("tdsiWSPU"); manager = factory.createEntityManager(); } @GET @Produces("application/json") public String getJson() { //TODO return proper representation object throw new UnsupportedOperationException(); } @PUT @Consumes("application/json") public void putJson(String content) { } }
Agora vamos alterar o código para acessar o banco de dados e transformar a classe Marca.java em objeto JSON com o Jackson. Serão adicionados os seguintes códigos:
@Path("/listarmarca")
Esta anotação adiciona uma nova rota, ou seja o link para acesso é:
http://localhost:8080/tdsiWS/webresources/tdsi/listarmarca
Foi adicionado o acesso JPA para acessar a marca 1, no caso FORD.
Marca marca = new Marca();
marca = manager.find(Marca.class,Long.parseLong(“1”));
manager.close();
Código para instanciar o Jackson.
ObjectMapper mapper = new ObjectMapper();
Declaração da variável que vai receber a string JSON.
String saidajson = null;
Transformação do código JPA em JSON e foi retirado o código antigo
try {
saidajson = mapper.writeValueAsString(marca);
} catch (JsonProcessingException ex) {
Logger.getLogger(TdsiResource.class.getName()).log(Level.SEVERE, null, ex);
}
return saidajson;
Como ficou agora o código:
package services; import ... public class TdsiResource { @Context private UriInfo context; private final EntityManagerFactory factory; private final EntityManager manager; public TdsiResource() { factory = Persistence.createEntityManagerFactory("tdsiWSPU"); manager = factory.createEntityManager(); } @GET @Path("/listarmarca") @Produces("application/json") public String getJson() { Marca marca = new Marca(); marca = manager.find(Marca.class,Long.parseLong("1")); manager.close(); ObjectMapper mapper = new ObjectMapper(); String saidajson = null; try { saidajson = mapper.writeValueAsString(marca); } catch (JsonProcessingException ex) { Logger.getLogger(TdsiResource.class.getName()).log(Level.SEVERE, null, ex); } return saidajson; } @PUT @Consumes("application/json") public void putJson(String content) { } }
Para testar o resultado acesssar:
http://localhost:8080/tdsiWS/webresources/tdsi/listarmarca
Link do código completo TdsiResource.java
Clique aqui para o próximo: Parte 7