Skip to main content

Microservicios con JAX-RS Parametros Date

 JAX-RS Parametros Date

JAX-RS   es fundamental para la creación de servicios REST dentro del ecosistema Java. tiene notables mejorias con cada versión.

Contamos con varios mecanimos para pasar parametros mediante simples anotaciones. En algunos casos deseamos realizar consultas por fechas por ejemplo para filtras los documentos de una colección en MongoDB mediante un campo fecha.

Hacemos una consulta desde consola a la colección fruit




Ahora creamos un Proyecto para Microservicios que usamos con PayaraMicro , MongoDB, jmoordb , jmoordbutils.
Creamos el entity
public class Fruit {
    private String name;
    private String description;
    private String id;
    private Date date1;

    public Fruit() {
    }
//set/get
}



Acontinuación creamos el Resources observe que el parametro fecha es de tipo String, y MongoDB almacena el contenido de las fechas en formato ISODATE
Mediante la clase DateUtil.stringToISODate --> Convertimos la fecha en formato String a ISODate que maneja MongoDB.

Creamos el Resources
  @GET
    @Path("/filterbyqueryparamdate")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Fruit> filterbyqueryparamdate(@QueryParam("name") String name, @QueryParam("id") String id, @QueryParam("date1") String date1) {
        List<Fruit> fruitList = new ArrayList<>();
        try {

            Date dateConverter = DateUtil.stringToISODate(date1);//dateString is query param.
          fruitList = fruitRepository.findByDate(dateConverter);

        } catch (Exception e) {
            System.out.println("filterbyqueryparam() " + e.getLocalizedMessage());

        }

        return fruitList;
    }

En el cliente creamos un Services
   public List<Fruit> filterbyqueryparamdate(String name, String id, String date1) {
        List<Fruit> suggestions = new ArrayList<>();
        try {

            Client client = ClientBuilder.newClient();
            suggestions = client
                    .target("http://localhost:8080"+ "/jmoordbcoreweb/resources/fruit/filterbyqueryparamdate/")
                     .queryParam("name",name )
                     .queryParam("id", id)
                     .queryParam("date1", date1)
                    
                    .request(MediaType.APPLICATION_JSON)
                    .get(new GenericType<List<Fruit>>() {});

        } catch (Exception e) {

            JsfUtil.errorDialog(" filterbyqueryparam()", e.getLocalizedMessage());
        }

        return suggestions;
    }

En el Controller del Cliente usamos un proceso inverso convertimos una fecha a String mediante DateUtil.isoDateToString(): y lo pasamos como parametro,
String date1 = DateUtil.isoDateToString(date);
List<Fruit> list = fruitServices.filterbyqueryparamdate("orange", "2", date1);


Comments

Popular posts from this blog

Primefaces v13

 La versión nueva de primefaces v13.0 elimina el componente <p:repeat>  Consulte los cambios en  https://github.com/primefaces/primefaces/releases/tag/13.0.0 por lo tanto si necesita una solución similar considere utilizar  <p:carousel>  o  <ui:repeat> En la versión 13 genera una excepción

Jmoordb-Core @UpdateMany y @DeleteMany

 Jmoordb-Core @UpdateMany y @DeleteMany Estoy trabajando en una versión nueva de jmoordb-core en la cual se estará implementando nuevas funcionalidades como lo son @DeleteMany y    @UpdateMany con la finalidad de hacer operaciones sobre múltiples documentos de la colección.