Continuamos con esta segunda parte procesar las anotaciones del objeto bien field.
Pero tenemos un arreglo claro son varios campos que tenemos que recorrer del objeto bueno, utilizando
el API de reflexión de Java.
Vamos a importar fiel de Yeva Lang refracta.
Atributos o campos como lo queramos llamar el objeto, en este caso producto P punto get class punto
get declarad field de acá obtener campos declarados que retorna el arreglo de field acá.
Entonces invocamos el método punto y coma.
Continuamos.
Vamos a utilizar el API Stream para que sea un poco más fluido con programación funcional.
Bueno, todo lo que hemos visto entonces a raíz puntó stream y pasamos atributos.
Listo.
Ahí tenemos nuestro stream de campos.
Bueno, lo primero es filtrar.
La idea es filtrar todos estos atributos o al final convertir este flujo solamente a los atributos que
estén anotados.
Esa la idea, ya que no todos pueden tener la anotación Jetson atributo.
No en este caso nombre precio, pero fecha no y así podríamos tener una lista larga de campos atributos
que no estén anotados, pero me interesa procesar solamente lo que tengan este decorador.
Pero usando filter.
Así que por eso es muy simple utilizar el API Stream.
Acá se emite el field, el campo, una opción Landa y preguntamos si este campo tiene esta anotación.
F Punto.
Bien, con get anoté Schön lo podremos preguntar, lo podemos palier porque obtenemos la anotación y
preguntamos que sea distinto de NULL, porque si no la tiene va a devolver un nulo, pero si la tienes
devuelve la instancia.
Así que con qué anotacion?
Puede ser, pero mucho mejor es anoté hecho en presente.
Si la anotación está presente, entonces invocamos este método y pasamos por argumento el nombre de
la anotación Watson atributo el nombre punto class.
Listo.
Entonces ahora va a filtrar todos los campos o atributos los field que tenga presente esta anotación.
Es decir, que esté anotado con Jason atributo listo.
Vamos a bajar acá.
Continuamos con un mapa.
Bueno, ahora tenemos solamente los campos anotados y lo vamos a convertir a un string, pero con estructura
de Jackson.
Bueno, para los que no saben una estructura, Jaison se utiliza mucho en JavaScript.
Porque claro, con cliente http con framework del tipo frontend como Angular, como React.
Trabaja mucho con Jackson porque parte del JavaScript, pero básicamente la estructura es el nombre
del atributo en minúscula.
2 punto el valor coma el segundo atributo, 2 punto el valor y así sucesivamente.
Y tú estás encerrado con llaves.
Necesitamos dos cosas primero, el nombre del campo o del atributo y el valor haciendo uso de reflexión.
Lo primero string nombre, pero el nombre puede ser el mismo que tenga la clase de producto.
O bien podríamos especificar acá.
Recuerden que la anotación de es un atributo.
Pusimos el atributo nombre por defecto acío de que es opcional.
Entonces, por poner un ejemplo, acá podríamos haber puesto nombre en el Jetson.
Descripción.
Primero preguntar si existe y tiene valor el atributo nombre de la anotación y si no, si no tiene valor
usar el nombre campo de FICAN, entonces usamos el nombre campo por defecto o bien descripción uno London.
Bueno, para eso primero F.
Punto, nyet, anoté Schön, le pasamos el nombre.
Recuerdan?
F Es el fiel del stream el campo.
Acá pasamos Jackson atributo punto class.
Con eso obtenemos la anotación y preguntamos nombre.
El atributo nombre que el que tenemos acá se fijan, está acá.
Si es igual, igual a vacío a nada, entonces vamos a asignar el nombre Campo Field punto Get name 2
punto.
Si no, recuerden que esto es un operador ternario.
Similar a Life, entonces una prisión si se cumple esto, sino esto otro.
Entonces si es vacío por defecto nombre campo.
Si no, si no es vacío, es todo acá.
El valor que contiene el atributo nombre de la anotación.
Todo acá se fijan.
Ya tenemos el nombre del campo en el Jackson o del atributo que faltaría el valor ratón.
Recuerden que el MAP siempre devuelve el objeto modificado.
En este caso vamos a convertir de un tipo field a un tipo String con la estructura Jaison.
Recuerden que la estructura Yeison, como explicaba, es el nombre del atributo, pero siempre va con
doble comillas, por ejemplo, doble comilla y acaba el nombre.
En ese caso es todo acá, pero la comilla es parte del string.
Entonces tengo que escapar, tengo que colocar una tercera comilla y acá es capás con pÃxeles.
Bien, acá más nombre perfecto, más 2.2.1.
Pero acá tenemos que cerrar esta comilla acá que enmarca al nombre.
Entonces lo mismo hay que cavar acá.
Escapamos.
Y acá en el valor también va comilla.
Entonces colocamos otra comilla acá, pero una sola, no dos.
Y acá escapamos más el valor.
Pero el valor lo tenemos con F del campo fiel punto inquieto.
Y pasamos el objeto.
Qué objeto?
Producto?
Acá nos va a pedir manejar exepción.
Se fijan, marca un error y está bien.
Acá nos pide manejar una acepción con el troi catch.
Después vamos a ver, pero por ahora continuamos concatenados con la comilla.
Acá tenemos que cerrar la comilla del valor.
Listo.
Punto y coma.
Ahora sí que si trae catch anidar contra el cacho.
Deto nombre trae Catch y acá devolvemos electric en el mapa.
Entonces, finalmente convertimos el field, el campo del tipo field por un string que contenga la estructura
Yeison, es decir, el nombre entre comillas dos puntos, el valor entre comillas y después cada uno
lo vamos a separar por coma.
Y todo eso dentro de llaves.
Bien, pero en el catch como esta es una excepción que nos obliga, es decir, es chequeada, lo vamos
a convertir a una excepción que no sea obligatoria, que no sea chequeada un reinte excepto entonces
fru new ragtime excepto entonces en caso de error en el get hay liguen acces exception que después incluso
este error va a ocurrir porque lo vamos a forzar para que ocurra, para que lo vean y después vamos
a solucionar.
Pero bien acá.
Error al ser Elizardo Yeison,
error al ralizar a Jaison.
Dos puntos espacio exacto en punto.
Get message esto.
Talita el map.
Vamos a aplicar un Redux para reducir todo el flujo.
Todos los campos en una única salida con la estructura, Jaison se Reedus.
Recuerden que el primer argumento acá vamos a colocar las llaves para abrir el Jaison y lo siguiente
una prisión lanta del tipo VIF Antxón.
Recuerden con tres generic los dos del argumento y el ratón.
Entonces acá sería A Koma B.
Y esta expresión lanta que devuelve un valor.
Entonces las llaves y vamos a preguntar if si a es igual a la llave de apertura.
Entonces cuál es a esto importante?
Porque recuerde que la primera vez o cuando comienza la concatenación para reducir a un único elemento,
ella va a tomar este valor.
Cuando concatena con el siguiente va a ser este acá.
Entonces, cuando a es igual a esto, no agregamos la coma porque no podemos colocar esto coma concatenado
con B.
No tiene que hacer esto con el primer elemento coma.
El segundo elemento y la coma comienza después del primer elemento es 7 el primer elemento de flujo,
no de la llave.
Entonces acá cuando son iguales, simplemente concatenados a con b ratón, a más B.
De lo contrario rotor a más la coma, un espacio más B y listo.
Recuerden que el Redux devuelve un string, un único elemento.
Entonces, como es un string junto con Cat.
Aunque tengamos con el cierre.
Se fijan, acá se abre y acá cerramos.
Yo estoy molesto y todo esto es un string de Trent.
Jason.
Finalmente, South VI, el Jackson y yo estamos listo.
Ahora, si ejecutamos, va a lanzar un error.
Ya va a caer en esta sección.
Va a decir error al ser realizare Jackson.
Vamos a ver.
Se fijan renta en exception error al realizar el Jaison.
Por qué?
Porque los campos, los atributos no son accesibles, no se pueden acceder porque son privados.
Producto.
Estos atributos son privados, entonces no se pueden leer, no se pueden acceder, es una protección
que tiene.
Entonces lo que podemos hacer acá es f.n серии accesible, lo dejamos dentro.
Es decir que el campo, a pesar de que sea privat, lo podemos acceder mediante reflexión.
Entonces ahora si que si ejecutamos.
Y desaparece el error y se genera nuestro Yeison a partir del objeto se fijan.
Descripción Entrecomillados Punto el valor entre precio entrecomillados punto el precio La fecha no
aparece porque no está anotada.
Se fijan y acá aparece descripción y no nombre.
Por qué?
Porque el nombre del campo en el Jetson por defecto es vacío y cuando es vacío toma el nombre del atributo
de la clase.
Por ejemplo, nombre.
Pero si no vacío.
Toma este nombre por defecto, entonces descripción Pero por ejemplo, si esto lo omitimos, lo quitamos.
Fíjense bien, voy a quitar nombre.
Vamos a ejecutar acá en ejemplo.
Va a cambiar acá a nombre.
Mismo nombre que la tribu, otra clase.
Nombre?
Incluso el precio.
Costo en vez de precio.
Quiero que Jackson sea costo.
Acá cambia costo 12.
Es súper robusta etapa nos permite procesar con metadata o con configuración, atributos, métodos,
clases que están implementado, que están decorado con nuestras anotaciones.
Bien, los paréntesis son opcionales cuando no definimos los atributos.
Lo podría omitir ningún problema.
Y para finalizar esto acá, cuando comparamos que el primer elemento, si es igual a llave, es simplemente
que concatena y después, cuando sean los siguientes elementos, es decir, los elementos de flujo,
concatena con Lacoma.
Porque, por ejemplo, siento, lo omitimos.
Fíjense lo que va a suceder.
Va a colocar una coma al comienzo.
Se fijan acá y no, eso no tiene que ser así.
Control C.
Yase.
Nada más.
Continuamos en la siguiente clase.