style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Blogs

Error 404 testing controladores spring mvc con mockito y spring-test

Buenos días a todos.
He estado trabajando en test de aplicaciones spring mvc con spring-test y mockito y me he topado con el problema de Status 404 cuando intento acceder a los controladores (Status Expected: 201 but was 404), Alguien me podría apoyar para solucionarlo?

Controlador

@RequestMapping(value="app/bitacora.html",method=RequestMethod.GET)
@ResponseBody
public ModelAndView testcontroller(ModelAndView vista, HttpServletRequest req){

/*
* obtener los valores del request
*/
String tipoBusqueda=req.getParameter("selectTipoBusqueda");
//Aca se procesan los valores del request

vista.addObject("totalPaginas", resultadoService.get(2));
vista.setViewName("Bitacora.jsp");//
return vista;
}

Test

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"**/spring-servletTest.xml"})
@WebAppConfiguration
public class Login {
@Mock
BitacoraServices bitacoraServices;

@Spy
BitacoraRepository bitacoraRepository;

@InjectMocks
private BitacoraController bitacoraController;

private MockMvc mockMvc;

@Before
public void setup() {

Meetup JVM MX de Noviembre 2017, Ciudad de México

Como algunos saben, el equipo de JVM MX realiza un meetup cada mes con charlas relacionadas a la Java Virtual Machine y/o la tecnología Java.

El meetup de este mes fue anunciado hace unos momentos y el contenido es excelente.

La agenda es la siguiente:

  • Bienvenida por Enrique Zamudio
  • Presentación "Desplieque de aplicaciones con Docker Swarm" por Carlos Cavazos
  • Presentación "Más allá de REST con gRPC" por Domingo Suárez
  • Presentación "Realizando pruebas con Spock" por Andrés Almiray
  • Cerveza / Pizza / Networking

¡El cupo es limitado a 60 personas y tiene cuota de recuperación de $100 MXN!

Si les interesa reserven su lugar cuanto antes.

Fecha y hora: 27 de noviembre, 7 a 10 pm.
Lugar: Oficinas de Globant. Av. Insurgentes Sur 859, Piso 15, Ciudad de Mexico.

Registro aquí: https://www.eventbrite.com/e/jvm-mx-noviembre-2017-tickets-39778840583

Comparar fechas

       Un pequeño aporte a Luz Jasso. Mie, 08/02/2017 - 13:26        

        //fechas de ejemplo
        String fecha_ini = "2007-11-08";
        String fecha_fin = null;
        //hojas de ejemplo
        String hr_ini    = "02:00";
        String hr_fin    = "02:30";
        //declaracion de variables
        double diff, min, hrf;
        Date   result1, result2;
       
        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm");
       
        try {
            result1 = formater.parse(fecha_ini+" "+hr_ini);
            result2 = formater.parse(fecha_fin+" "+hr_fin);
            //
            diff = result2.getTime() - result1.getTime();
            long tiempoMensual =0;
            tiempoMensual += diff;
            min=((diff%3600000)/60000)/60;
            hrf=diff/3600000;            
        } catch (ParseException ex) {
            //Escriba aqui los valores de retorno al ocurrir error
            min=0;hrf=0;
        }

Se lo robaron

Buenos días comunidad,

Hace mucho tiempo, años, leí aquí una entrada que básicamente decía "Read The Fucking Stack Trace", esto aunque parezca menor, desde hace mucho cuando empezaba a trabajar con alguien que va aprendiendo, lo ponía a leer dicha entrada, era la iniciación. Hoy llegó alguien no tan nuevo, pero igual al ver un error en el que pidió ayuda, mi respuesta iba a ser la entrada al blog, pero desapareció, tal vez sea alguna tontería, pero si se pudiera recuperar, estaría chingon.

Saludos.

Server-Sent Events con Spring 4

Les comparto una nueva entrada en mi blog sobre Server-Sent Events en Spring 4.

https://windoctor7.github.io/Spring-SSE.html

Curiosidades programando Java

Hoy les voy a mostrar algunas curiosidades que se pueden hacer con código Java que puede que algunas sirvan y algunas pues solo para divertirse:

1.- Crear en línea una colección mediante una clase anónima y un bloque inicializador de instancia en lugar de hacerlo con Arrays.asList:

public static void main(String[] args) {
       
        List<Integer> lista = Arrays.asList(7,9,1);
        lista.add(3);
        System.out.println(lista);
}

El inconveniente de usar Arrays.asList es que debido a que la lista se genera desde la raiz de un arreglo, estos por naturaleza tienen un tamaño definido y no puede redimensionarse por lo tanto la lista generada no soporta la operación add o alguna otra que intente modificar el tamaño y devuelve UnsupportedOperationException.

public static void main(String[] args) {
       
        List<Integer> lista = new ArrayList() {{ add(7); add(9); add(1)}};
        lista.add(3);
        System.out.println(lista);
        System.out.println(lista.getClass());
}

La Fundación Eclipse será el nuevo hogar de la plataforma Java EE


Hace algunas semanas Oracle anunció la iniciativa de buscar un nuevo hogar para la plataforma Java EE. En busca de que la evolución de la misma sea más ágil, flexible y abierta.

El día de hoy se dio a conocer que después de platicar con varias organizaciones, la
a Fundación Eclipse resultó seleccionada para albergar el proyecto y plataforma Java EE.

El repositorio de código de Java EE ahora está en Github: https://github.com/javaee

Aquí el anuncio oficial de Oracle: https://blogs.oracle.com/theaquarium/opening-up-ee-update

**Update**

Anuncio oficial de Red Hat: http://middlewareblog.redhat.com/2017/09/12/java-ee-moves-to-eclipse/

Concurrencia Web Service REST ibatis Spring

Buen día a todos les comento mi problema. Tengo un proyecto web donde se hacen peticiones a los web service entre tantas de la peticiones hay una en particular que me esta dando muchos problemas y es el siguiente: Tengo una query que busca el máximo id de una columna + 1, en el método donde hago varias cosas al final mando a llamar esa query y justo después hago un insert a la base de datos con ese id que me devuelve la primer query. el problema es que hay ocasiones donde parece que se hace una peticion al mismo tiempo hora y segundo y en le asigna el (id + 1) a dos usuarios totalmente distintos cuando yo esperaria que sea el cosecutivo, eh utlizado varias notaciones en el método como este: @Transactional(rollbackFor = ServiceException.class, propagation = Propagation.NESTED, isolation = Isolation.READ_UNCOMMITTED) pero aun así el problema persiste.

Agradecería sus comentarios.

Gracias!!

Spring MVC ... primer ejemplo (REST)

Para este ejemplo crearemos una base de datos (yo uso postgresql) llamada proyecto, agregaremos una tabla usuario con los siguientes campos: id, nombre, password, logeado y area.

CREATE TABLE public.usuario
(
    id INTEGER NOT NULL,
    nombre CHARACTER VARYING NOT NULL,
    password CHARACTER VARYING  NOT NULL,
    logeado BOOLEAN,
    area CHARACTER VARYING,
    CONSTRAINT usuario_pkey PRIMARY KEY (id)
);

Ahora agregaremos unos datos:

INSERT INTO public.usuario(
        id, nombre, password, logeado, area)
        VALUES (1, 'Antony Yung', '00T$@l12', TRUE, 'sistemas'),(2, 'Adrian Uribe', '3EvBb00', FALSE, 'administracion'),
    (3,'Ernestina Pedroza','@22GgHQll',TRUE,'recursos humanos');

Una vez creado la base de datos y su correspondiente tabla nos enfocaremos a crear el ejemplo con Spring MVC.

¿Qués es lo que ncesitaremos?

  1. Archivo: build.gradle , para configurar las dependencias necesarias

Crear sello de CFDI con java

El sello de un CFDI es en realidad la firma electrónica de algunos campos en conjunto(cadena original) del CFDI. La firma digital brinda varios servicios de seguridad:

  • No repudio. La entidad que emite el CFDI no puede rechazar que ella/él lo emitió puesto que en teoría sólo ella/él conoce la llave privada y nadie mas.
  • Autenticación. Al verificar la firma de un CFDI sabemos quién lo emitio ya que se utiliza la correspondiente llave pública del emisor. En Criptografía de llave pública,
    siempre existen un par de llaves, la pública y privada, las cuales sirven para cifrar y descifrar el mensaje.
  • Integridad. Al firmar el CFDI se realiza un subproceso que genera una cadena única, producto del uso de funciones hash. Si se altera el documento posteriormente o al menos los
    campos que se uilizan para generar la cadena original, la cadena única generada debe cambiar completamente y el resultado de la firma será diferente a la original.

Hay dos procesos principales en la generación del sello:

Distribuir contenido

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">