Arquitectura
GSON
GSON es una pequeña biblioteca de
código abierto para el lenguaje java que nos permite convertir una clase java
en un String con formato JSON y viceversa, mediante la serialización y
deserialización entre objetos Java y su representación en notación JSON,
simplemente invocando los métodos toJson() o fromJson().

En el pom.xml se agregan las
dependencias para descargar las librerías del repositorio Maven que son
necesarias para activar el Gson.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>1.7.1</version>
</dependency>
Se crean los objetos POJO Recibos, Documentos
y DetRecibo que son la clase encargadas de almacenar los resultados del
servicio, requeridos para que luego, utilizando atributos de la librería Gson, se
logre indicar las dependencias con las propiedades JSON devueltas por el
servicio web en RESTful, de este modo es posible convertir cadenas JSON
formateado al tipo de objetos JAVA.
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name =
"recibos")
public class Recibos {
private
Integer doccod;
private
Integer docrecitm;
public Integer
getDoccod() {
return
doccod;
}
public void
setDoccod(Integer doccod) {
this.doccod
= doccod;
}
public Integer
getDocrecitm() {
return
docrecitm;
}
public void
setDocrecitm(Integer docrecitm) {
this.docrecitm
= docrecitm;
}
}
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name =
"documentos")
public class Documentos {
private
Integer doccod;
private Integer docanonum;
private Integer doccor;
private String
tpodoccod;
public Integer
getDoccod() {
return
doccod;
}
public void
setDoccod(Integer doccod) {
this.doccod
= doccod;
}
public Integer
getDocanonum() {
return
docanonum;
}
public void
setDocanonum(Integer docanonum) {
this.docanonum
= docanonum;
}
public Integer
getDoccor() {
return
doccor;
}
public void
setDoccor(Integer doccor) {
this.doccor
= doccor;
}
public String
getTpodoccod() {
return
tpodoccod;
}
public void
setTpodoccod(String tpodoccod) {
this.tpodoccod
= tpodoccod;
}
}
public class DetRecibo {
private Integer doccod;
private String
concepto;
private Double importe;
public Integer
getDoccod() {
return
doccod;
}
public void setDoccod(Integer
doccod) {
this.doccod
= doccod;
}
public String
getConcepto() {
return
concepto;
}
public void
setConcepto(String concepto) {
this.concepto
= concepto;
}
public Double
getImporte() {
return
importe;
}
public void
setImporte(Double importe) {
this.importe
= importe;
}
}
En alguna clase JAVA en la que se desea
agregar el método en el cual se implementará la conversión de objetos con Gson;
para hacer posible implementar la conversión de objetos al formato JAVA para
que, de este modo, pueda ser enviado a través del servicio en el modelo
SpringMVC logrando desplegar el servicio RESTful. Esto es posible gracias al el
uso de dos métodos propios del Gson uno es el toJson(), utilizado para
convertir objetos Java al formato JSON, y el otro método que es el más usado,
el fromJson(), utilizado para convertir del formato JSON en objetos Java.
import com.google.gson.Gson;
@Controller
@Scope("session")
public class GestionController {
@Autowired
private
RestTemplate restTemplate;
@RequestMapping(value ="/recibo.htm" )
public String recibos(
ModelMap model , HttpServletRequest request, HttpServletResponse response ){
Documentos d
= (Documentos) request.getSession().getAttribute("s_expediente");
try {
// Obtención de la cabecera del recibo
String url =
"http://localhost:8080/gestiondocumental-rest/rs/rest/usuarios-service/{anio}/{corr}/{tipo}/recibo";
// Obtención de datos en la respuesta
del modelo REST
String respuesta = restTemplate.getForObject(url , String.class,
d.getDocanonum() ,d.getDoccor() , d.getTpodoccod());
// Uso del Gson para obtener datos de
un Objeto
// Inicialización del objeto Gson
Gson
gson = new Gson();
// Obtención del objeto Recibos que
almacena los datos enviados en la solicitud del mensaje, para ser convertidos del
formato JSON en objetos Java
Recibos recibo=
gson.fromJson(respuesta,Recibos.class);
// Guardando el objeto Recibo como
atributo del requerimiento para posteriormente ser utilizado
request.setAttribute("recibo", recibo);
// Se agrega en el objeto model que es del
tipo ModelMap para ser enviado en la respuesta que retornar en el parámetro model.
model.put("expediente", d);
// Obtención del detalle del recibo
url
=
"http://localhost:8080/gestiondocumental-rest/rs/rest/usuarios-service/{anio}/{corr}/{tipo}/recibo/{recfact}/detalle";
// Obtención de datos en la respuesta
del modelo REST
respuesta
= restTemplate.getForObject(url , String.class, d.getDocanonum() ,d.getDoccor()
, d.getTpodoccod(),recibo.getDocrecfact());
// Uso del Gson para obtener un Listado
del detalle del Objeto
// Inicialización del objeto Gson
gson = new Gson();
// Aplicación de la parametrización de
la colección que retornará la lista del detalle del recibo
Type collectionType= new
com.google.gson.reflect.TypeToken<List<DetRecibo>>(){}.getType();
// Obtención de la Lista del objetos DetRecibo
que almacena los datos enviados como colección en la solicitud del mensaje,
para ser convertidos del formato JSON en objetos Java
List<DetRecibo> listaPedidos=
gson.fromJson(respuesta , collectionType);
// Guardando la lista de obejtos DetRecibo
como atributo del requerimiento para posteriormente ser utilizado
request.setAttribute("lista",
listaPedidos);
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("MENSAJE",
"No se encontraron datos.");
}
return
"recibo";
}
}
No hay comentarios:
Publicar un comentario