Arquisoft / InciDashboard_e3b

InciDashboard_e3b
The Unlicense
0 stars 1 forks source link

Problema con la asignación de operarios para las nuevas incidencias #31

Closed Gemeto closed 6 years ago

Gemeto commented 6 years ago

Cuando Dashboard recibe una incidencia devuelve una excepción al intentar asignarle un operario.

Aqui teneis un ejemplo:

{"username":"paco@gmail.com","password":"123456","kind":"Person","incidenceName":"asd","description":"sad","location":"asds","labels":[],"campos":{},"status":"ABIERTA","cacheable":true}) incidashboard_e3b [aba93160e5f9] | incidashboard_e3b [aba93160e5f9] |org.springframework.kafka.listener.ListenerExecutionFailedException: Listener method 'public void es.uniovi.asw.e3b.incidashboard_e3b.listeners.IncidenceListener.listen(java.lang.String)' threw exception; nested exception is java.lang.NullPointerException incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:131) ~[spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:101) ~[spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:597) [spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.access$1800(KafkaMessageListenerContainer.java:222) [spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer$ListenerInvoker.run(KafkaMessageListenerContainer.java:772) [spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_151] incidashboard_e3b [aba93160e5f9] | at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_151] incidashboard_e3b [aba93160e5f9] | at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151] incidashboard_e3b [aba93160e5f9] |Caused by: java.lang.NullPointerException: null incidashboard_e3b [aba93160e5f9] | at es.uniovi.asw.e3b.incidashboard_e3b.services.OperariosService.findAll(OperariosService.java:31) ~[classes!/:0.0.1-SNAPSHOT] incidashboard_e3b [aba93160e5f9] | at es.uniovi.asw.e3b.incidashboard_e3b.controllers.IncidenciasController.recieveIncidence(IncidenciasController.java:112) ~[classes!/:0.0.1-SNAPSHOT] incidashboard_e3b [aba93160e5f9] | at es.uniovi.asw.e3b.incidashboard_e3b.listeners.IncidenceListener.listen(IncidenceListener.java:38) ~[classes!/:0.0.1-SNAPSHOT] incidashboard_e3b [aba93160e5f9] | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151] incidashboard_e3b [aba93160e5f9] | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_151] incidashboard_e3b [aba93160e5f9] | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_151] incidashboard_e3b [aba93160e5f9] | at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_151] incidashboard_e3b [aba93160e5f9] | at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:180) ~[spring-messaging-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] incidashboard_e3b [aba93160e5f9] | at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:112) ~[spring-messaging-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:48) ~[spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:118) ~[spring-kafka-1.0.5.RELEASE.jar!/:na] incidashboard_e3b [aba93160e5f9] | ... 7 common frames omitted incidashboard_e3b [aba93160e5f9] | incidashboard_e3b [aba93160e5f9] |2018-06-04 23:44:54.835 INFO 1 --- [ Thread-7] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b9e13df: startup date [Mon Jun 04 23:38:52 GMT 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@deb6432 incidashboard_e3b [aba93160e5f9] |2018-06-04 23:44:54.836 INFO 1 --- [ Thread-7] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3ac8cf9b: startup date [Mon Jun 04 23:39:07 GMT 2018]; parent: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b9e13df incidashboard_e3b [aba93160e5f9] |2018-06-04 23:44:54.842 INFO 1 --- [ Thread-7] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 2147482647

Gemeto commented 6 years ago

Parece que el fallo se produce en la búsqueda de un operario para asignar a la nueva incidencia.

miguelms95 commented 6 years ago

El problema está en que se está instanciando un controlador con new MainController() (WTF), y toda la lógica metida en un controlador hace que la inyección de dependencias no funcione, además de que no es la filosofía de springboot. La lógica tiene que estar en los servicios.

En el commit c0bae98 de la rama manual, desde la que estoy trabajando, se ven los cambios que he hecho. Está ahora todo en un servicio, no en un controlador. Ya encuentra el operario y lo asigna correctamente.

El único problema que queda es al guardarlo en la base de datos: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : es.uniovi.asw.e3b.incidashboard_e3b.entities.Incidence.agent

miguelms95 commented 6 years ago

Esto está finiquitado, ahora el problema es diferente (sutil), pero abro un nuevo issue para no mezclar: https://github.com/Arquisoft/InciDashboard_e3b/issues/33