jdk 8_212

Hola…
Actualice el jdk que usa mi sistema y ahora me lanza error en un javaBean. Exactamente en una linea como esta: BeanItem item = new BeanItem((Employee)obj);

Tambien actualice el jdk de mi proyecto y sigue igual.
Copio alguna parte del log de tomcat. Gracias.

31-May-2019 19:05:27.489 SEVERE [http-nio-8090-exec-1]
com.vaadin.Application.terminalError Terminal error:
com.vaadin.event.ListenerMethod$MethodException
Cause: java.lang.NullPointerException
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1198)
at com.vaadin.ui.Button.fireClick(Button.java:539)
at com.vaadin.ui.Button.changeVariables(Button.java:206)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1305)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1224)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:739)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.vaadin.data.util.MethodProperty.convertPrimitiveType(MethodProperty.java:553)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:510)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:287)
at com.vaadin.data.util.MethodPropertyDescriptor.createProperty(MethodPropertyDescriptor.java:124)
at com.vaadin.data.util.BeanItem.(BeanItem.java:86)
at com.vaadin.data.util.BeanItem.(BeanItem.java:65)
at com.inodes.hrdata.ui.views.EmployeeCRUD.completeEmployeeForm(EmployeeCRUD.java:485)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:272)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:192)
at com.inodes.hrdata.ui.views.EmployeeList$8$1.buttonClick(EmployeeList.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
… 35 more

31-May-2019 19:05:40.525 SEVERE [http-nio-8090-exec-3]
com.vaadin.Application.terminalError Terminal error:
com.vaadin.event.ListenerMethod$MethodException
Cause: java.lang.NullPointerException
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1198)
at com.vaadin.ui.Button.fireClick(Button.java:539)
at com.vaadin.ui.Button.changeVariables(Button.java:206)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1305)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1224)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:739)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.vaadin.data.util.MethodProperty.convertPrimitiveType(MethodProperty.java:553)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:510)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:287)
at com.vaadin.data.util.MethodPropertyDescriptor.createProperty(MethodPropertyDescriptor.java:124)
at com.vaadin.data.util.BeanItem.(BeanItem.java:86)
at com.vaadin.data.util.BeanItem.(BeanItem.java:65)
at com.inodes.hrdata.ui.views.EmployeeCRUD.completeEmployeeForm(EmployeeCRUD.java:485)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:272)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:192)
at com.inodes.hrdata.ui.views.EmployeeList$8$1.buttonClick(EmployeeList.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
… 35 more

31-May-2019 19:06:16.961 SEVERE [http-nio-8090-exec-6]
com.vaadin.Application.terminalError Terminal error:
com.vaadin.event.ListenerMethod$MethodException
Cause: java.lang.NullPointerException
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1198)
at com.vaadin.ui.Button.fireClick(Button.java:539)
at com.vaadin.ui.Button.changeVariables(Button.java:206)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1305)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1224)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:739)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.vaadin.data.util.MethodProperty.convertPrimitiveType(MethodProperty.java:553)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:510)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:287)
at com.vaadin.data.util.MethodPropertyDescriptor.createProperty(MethodPropertyDescriptor.java:124)
at com.vaadin.data.util.BeanItem.(BeanItem.java:86)
at com.vaadin.data.util.BeanItem.(BeanItem.java:65)
at com.inodes.hrdata.ui.views.EmployeeCRUD.completeEmployeeForm(EmployeeCRUD.java:485)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:272)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:192)
at com.inodes.hrdata.ui.views.EmployeeList$8$1.buttonClick(EmployeeList.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
… 35 more

31-May-2019 19:07:00.802 SEVERE [http-nio-8090-exec-1]
com.vaadin.Application.terminalError Terminal error:
com.vaadin.event.ListenerMethod$MethodException
Cause: java.lang.NullPointerException
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1198)
at com.vaadin.ui.Button.fireClick(Button.java:539)
at com.vaadin.ui.Button.changeVariables(Button.java:206)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1305)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1224)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:739)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.vaadin.data.util.MethodProperty.convertPrimitiveType(MethodProperty.java:553)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:510)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:287)
at com.vaadin.data.util.MethodPropertyDescriptor.createProperty(MethodPropertyDescriptor.java:124)
at com.vaadin.data.util.BeanItem.(BeanItem.java:86)
at com.vaadin.data.util.BeanItem.(BeanItem.java:65)
at com.inodes.hrdata.ui.views.EmployeeCRUD.completeEmployeeForm(EmployeeCRUD.java:485)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:272)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:192)
at com.inodes.hrdata.ui.views.EmployeeList$8$1.buttonClick(EmployeeList.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
… 35 more

31-May-2019 19:10:30.319 SEVERE [http-nio-8090-exec-3]
com.vaadin.Application.terminalError Terminal error:
com.vaadin.event.ListenerMethod$MethodException
Cause: java.lang.NullPointerException
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1198)
at com.vaadin.ui.Button.fireClick(Button.java:539)
at com.vaadin.ui.Button.changeVariables(Button.java:206)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1305)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1224)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:739)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.vaadin.data.util.MethodProperty.convertPrimitiveType(MethodProperty.java:553)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:510)
at com.vaadin.data.util.MethodProperty.(MethodProperty.java:287)
at com.vaadin.data.util.MethodPropertyDescriptor.createProperty(MethodPropertyDescriptor.java:124)
at com.vaadin.data.util.BeanItem.(BeanItem.java:86)
at com.vaadin.data.util.BeanItem.(BeanItem.java:65)
at com.inodes.hrdata.ui.views.EmployeeCRUD.completeEmployeeForm(EmployeeCRUD.java:485)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:272)
at com.inodes.hrdata.ui.views.EmployeeCRUD.(EmployeeCRUD.java:192)
at com.inodes.hrdata.ui.views.EmployeeList$8$1.buttonClick(EmployeeList.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
… 35 more

Hola, Mariana, podrías proporcionar más información?

  • Versión exacta de Vaadin que estás utilizando
  • Contexto en el cual ocurre la excepción (haciendo click en un boton?)
  • Algún código que pueda reproducir el issue sería muy bueno

Saludos!

Hola.
Gracias por responder.
Te cuento. Tengo una lista de empleados. Con doble clic se deberia abrir la ventana de edicion del empleado. Ese error no me lo permite. Igualmente cuando hago clic en el boton mas para agregar un empleado nuevo tampoco me abre la ventana de carga de empleados.

En EmployeeCRUD() en este metodo es donde tengo el error. Especificamente donde genero el POJO (donde creo el item)
protected void completeEmployeeForm(Form form) {

	logger.debug("DEBUG EmployeeCRUD: completeEmployeeForm() 1");
	// Genero el POJO
	BeanItem<Employee> item = new BeanItem<Employee>((Employee)obj);

	// FieldFactory for customizing the fields and adding validators
	form.setFormFieldFactory(new EmployeeFieldFactory());
	form.setItemDataSource(item); // bind to POJO via BeanItem

	// Determines which properties are shown, and in which order:
	logger.debug("DEBUG EmployeeCRUD: completeEmployeeForm() 2");
	form.setVisibleItemProperties(Arrays.asList(new String[] {
			"employeeId", "clockUserId", "company",
			"firstName","lastName","gender", "maritalStatus",
			"documentType", "documentNumber", "cuit",
			"birthDate", "status", "clockPassword", "clockAdmin"}));
	logger.debug("DEBUG EmployeeCRUD: completeEmployeeForm() COMPLETE");
}


El vaadin que estoy usando es viejo. 6.6.7

Por lo que pude ver, el problema surge al analizar las propiedades de la clase Employee. Hay una de las propiedades que está causando esto. Una buena idea sería comentar todas y empezar a descomentar una por una hasta encontrar cual es la que tiene el problema.

Si puedes pegar el código completo de Employee, le puedo pegar una mirada.

Saludos!

Muchisimas gracias. Te paso el de employee y el de person. Porque con visitantes me pasa lo mismo…



package com.inodes.hrdata.entities;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.ForeignKey;

import com.inodes.hrdata.entities.organization.NodePersonMap;

/**
 * Employee
 * @author mhapanowicz
 * @version 1.0
 * @created 15-ago-2011 11:57:37 a.m.
 */
@Entity
@Table(name="EMPLOYEE")
@Cacheable(true)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Employee extends Person {

	/**
	 * Serial Version
	 */
	private static final long serialVersionUID = 7861976124910413210L;
	
	/**
	 * Constants
	 */
	public static final int EMPLOYEE_TYPE_WAGE = 1;
	public static final int EMPLOYEE_TYPE_MONTHLY = 2;

	/**
	 * An employee can be mapped as an user, but not always
	 */
	@OneToOne(mappedBy="employee")
	private User user;

	@Column(name = "CUIT", length = 20)
	private String cuit;

	/**
	 * Company to which the employee belongs
	 */
	@ManyToOne @JoinColumn(name="COMPANY_UID") @ForeignKey(name="FK_EMPLOYEE_COMPANY")
	private Company company;

	@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, 
			CascadeType.REMOVE}, mappedBy="employee")
	private List<WorkingPeriod> workingPeriods = new ArrayList<WorkingPeriod>();

	/**
	 * Employee ID (For Spanish "Numero de Legajo")
	 */
	@Column(name = "EMPLOYEE_ID")
	private long employeeId;

	/**
	 * A formal status (1 Active, 0 Inactive)
	 */
	@Column(name = "STATUS", nullable = false, length = 1)
	private int status = 1;

	@ManyToOne @JoinColumn(name="MARITAL_STATUS_UID") @ForeignKey(name="FK_EMPLOYEE_MARITAL_STATUS")
	private MaritalStatus maritalStatus;

	/**
	 * Employee Work schedules
	 */
	@OneToMany @JoinColumn(name="EMPLOYEE_ID") 
	private Collection<EmployeeWorkSchedule> workSchedules;
	
	@OneToMany @JoinColumn(name="PERSON_UID") 
	//@ForeignKey(name="FK_ORG_NODE_PERSON_MAP")
	private Collection<NodePersonMap> nodePersonMap;
	
	/**
	 * @return the cuit
	 */
	public String getCuit() {
		return cuit;
	}

	/**
	 * @param cuit the cuit to set
	 */
	public void setCuit(String cuit) {
		this.cuit = cuit;
	}

	/**
	 * @return the workingPeriods
	 */
	public List<WorkingPeriod> getWorkingPeriods() {
		return workingPeriods;
	}

	/**
	 * Adds a working period to the employee
	 * @param working period
	 */
	public void addWorkingPeriod(WorkingPeriod workingPeriod) {
		if(!workingPeriods.contains(workingPeriod)) {
			workingPeriods.add(workingPeriod);
		}
	}
	
	/**
	 * @param workingPeriods the workingPeriods to set
	 */
	public void setWorkingPeriods(List<WorkingPeriod> workingPeriods) {
		this.workingPeriods = workingPeriods;
	}

	/**
	 * Removes a working period from the employee
	 * @param workingPeriod
	 */
	public void removeWorkingPeriod(WorkingPeriod workingPeriod) {
		workingPeriods.remove(workingPeriod);
	}

	/**
	 * @return the employeeId
	 */
	public long getEmployeeId() {
		return employeeId;
	}

	/**
	 * @param employeeId the employeeId to set
	 */
	public void setEmployeeId(long employeeId) {
		this.employeeId = employeeId;
	}

	/**
	 * @return the user
	 */
	public User getUser() {
		return user;
	}

	/**
	 * @param user the user to set
	 */
	public void setUser(User user) {
		this.user = user;
	}

	/**
	 * @return the company
	 */
	public Company getCompany() {
		return company;
	}

	/**
	 * @param company the company to set
	 */
	public void setCompany(Company company) {
		this.company = company;
	}

	public MaritalStatus getMaritalStatus() {
		return maritalStatus;
	}

	public void setMaritalStatus(MaritalStatus maritalStatus) {
		this.maritalStatus = maritalStatus;
	}

	public boolean isAllowed () {
		return Status.ACTIVE == status;
	}

	/**
	 * @return the workSchedules
	 */
	public Collection<EmployeeWorkSchedule> getWorkSchedules() {
		return workSchedules;
	}

	/**
	 * @param workSchedules the workSchedules to set
	 */
	public void setWorkSchedules(Collection<EmployeeWorkSchedule> workSchedules) {
		this.workSchedules = workSchedules;
	}
	
	/**
	 * Add the new work schedule
	 * @param schedule
	 */
	public void addWorkSchedules(EmployeeWorkSchedule schedule) {
		if(workSchedules != null && !workSchedules.contains(schedule)) {
			workSchedules.add(schedule);
		}
	}
	
	/**
	 * Remove the specific schedule
	 * @param schedule
	 */
	public void removeWorkSchedule(EmployeeWorkSchedule schedule) {
		if(workSchedules != null && workSchedules.contains(schedule)) {
			workSchedules.remove(schedule);
		}
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((cuit == null) ? 0 : cuit.hashCode());
		result = prime * result + (int) (employeeId ^ (employeeId >>> 32));
		result = prime * result + status;
		result = prime * result + ((user == null) ? 0 : user.hashCode());
		return result;
	}

	/**
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Employee other = (Employee) obj;
		if (cuit == null) {
			if (other.cuit != null)
				return false;
		} else if (!cuit.equals(other.cuit))
			return false;
		if (employeeId != other.employeeId)
			return false;
		if (status != other.status)
			return false;
		if (user == null) {
			if (other.user != null)
				return false;
		} else if (!user.equals(other.user))
			return false;
		return true;
	}


	/**
	 * @return the status
	 */
	public int getStatus() {
		return status;
	}

	/**
	 * @param status the status to set
	 */
	public void setStatus(int status) {
		this.status = status;
	}

	/**
	 * @see Object#toString()
	 */
	public String toString() {
		return super.toString() + " (Empleado)";
	}
	
	/**
	 * Returns the implementation person type
	 */
	public String getPersonType() {
		return Person.PERSON_TYPE_EMPLOYEE;
	}

	@Override
	public int getUpdateHashCode() {
		final int prime = 31;
		int result = super.getUpdateHashCode();
		result = prime * result
				+ status;
		return result;
	}
	
	@Override
	public int getUpdateHashCodeExcludingDevices() {
		final int prime = 31;
		int result = super.getUpdateHashCodeExcludingDevices();
		result = prime * result
				+ status;
		return result;
	}	

	public boolean isBasicallySameAs(Employee obj) {
		
		if (this == obj)
			return true;
		
		if (getClass() != obj.getClass())
			return false;
		
		if (!super.isBasicallySameAs(obj))
			return false;		
		
		Employee other = (Employee) obj;
		if (cuit == null) {
			if (other.cuit != null)
				return false;
		} else if (!cuit.equals(other.cuit))
			return false;
		if (employeeId != other.employeeId)
			return false;
		if (status != other.status)
			return false;
		
		return true;
	}






package com.inodes.hrdata.entities;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.Formula;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Index;

import com.inodes.hrdata.behaviour.NodeEnabled;
import com.inodes.hrdata.behaviour.RouteAndDeviceEnabled;
import com.inodes.hrdata.dao.PersonRouteDao;
import com.inodes.hrdata.entities.organization.Node;
import com.inodes.util.CollectionFactory;

/**
 * Class to represent a controlled person
 * @author mhapanowicz
 * @version 1.0
 * @created 15-ago-2011 11:57:34 a.m.
 */
@Entity
@Table(name="PERSON")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Person extends AbstractAuditableEntity implements NodeEnabled, RouteAndDeviceEnabled {

	/**
	 * Serial Version
	 */
	private static final long serialVersionUID = -4151037698370011608L;

	/**
	 * Contact Information
	 */
	@Embedded
	private Contact contactData = new Contact();
	
	/**
	 * Person Sch Information
	 */
	@Embedded
	private SchedulePerson personSchData = new SchedulePerson();

	/**
	 * Document Number (It may contain alphabetic digits, such as in a passport)
	 */
	@Column(name = "DOCUMENT_NUMBER", length = 20)
	@Index(name="IX_PERSON_DOC_NUMBER")
	private String documentNumber;

	/**
	 * Document Type
	 */
	@ManyToOne 
	@JoinColumn(name="DOCUMENT_TYPE_ID") 
	@ForeignKey(name="FK_PERSON_DOCUMENT_TYPE")
	private DocumentType documentType;

	/**
	 * First Name
	 */
	@Column(name = "FIRSTNAME", length = 50)
	private String firstName;

	/**
	 * Last Name
	 */
	@Column(name = "LASTNAME", length = 50)
	private String lastName;

	/**
	 * Photo
	 */
	@OneToOne(cascade = {CascadeType.ALL}) 
	@JoinColumn(name="PHOTO_UID") 
	@ForeignKey(name="FK_PERSON_PHOTO")
	private Photo photo;

	/**
	 * The Unique ID to be identified by a clock
	 */
	@Column(name = "CLOCK_USER_ID", length = 25, 
			nullable=true, unique=true)
	private String clockUserId;
	
	/**
	 * The Unique ID to be identified by a clock
	 */
	@Column(name = "OLD_CLOCK_USER_ID", length = 25, nullable=true)
	private String oldClockUserId;
	

	/**
	 * Gender (Male / Female)
	 */
	@Column(name = "GENDER", length = 1, nullable=true)
	private String gender;

	/**
	 * Clock password for this person
	 */
	@Column(name = "CLOCK_PASSWORD", length = 5, nullable=true)
	private String clockPassword;

	/**
	 * Flag to know if this user is a clock admin
	 */
	@Column(name = "CLOCK_ADMIN")
	private boolean clockAdmin;

	/**
	 * Available Routes
	 */
	@ManyToMany(targetEntity=com.inodes.hrdata.entities.Route.class, cascade={CascadeType.ALL}) 
	@ForeignKey(name="FK_PERSON_ROUTE", inverseName="FK_ROUTE_PERSON")
	@JoinTable(
			name="PERSON_ROUTE",
			joinColumns=@JoinColumn(name="ROUTE_UID"),
			inverseJoinColumns=@JoinColumn(name="PERSON_UID")
	)
	@Transient
	private List<Route> routes = new ArrayList<Route>();
	
	/**
	 * Available Routes
	 */
	@ManyToMany(targetEntity=com.inodes.hrdata.entities.Route.class, cascade={CascadeType.REFRESH, CascadeType.MERGE})
	@ForeignKey(name="FK_ORIGINAL_PERSON_ROUTE", inverseName="FK_ORIGINAL_ROUTE_PERSON")
	@JoinTable(
			name="ORIGINAL_PERSON_ROUTE", 
			joinColumns=@JoinColumn(name="PERSON_UID"),
			inverseJoinColumns=@JoinColumn(name="ROUTE_UID")
			)
	private List<Route> originalRoutes = new ArrayList<Route>();	

	/**
	 * Capture devices
	 */
	@ManyToMany(targetEntity=com.inodes.hrdata.entities.CaptureDevice.class, cascade={CascadeType.REFRESH, CascadeType.MERGE})
	@ForeignKey(name="FK_PERSON_DEVICE", inverseName="FK_DEVICE_PERSON")
	@JoinTable(
			name="PERSON_DEVICE", 
			joinColumns=@JoinColumn(name="PERSON_UID"),
			inverseJoinColumns=@JoinColumn(name="DEVICE_UID")
			)
//	private Collection<CaptureDevice> devices = CollectionFactory.createCollection();
	private List<CaptureDevice> devices = new ArrayList<CaptureDevice>();
	
	/**
	 * Capture devices assigned originally, used to store them temporarily until restored
	 */
	@ManyToMany(targetEntity=com.inodes.hrdata.entities.CaptureDevice.class, cascade={CascadeType.REFRESH, CascadeType.MERGE})
	@ForeignKey(name="FK_ORIGINAL_PERSON_DEVICE", inverseName="FK_ORIGINAL_DEVICE_PERSON")
	@JoinTable(
			name="ORIGINAL_PERSON_DEVICE", 
			joinColumns=@JoinColumn(name="PERSON_UID"),
			inverseJoinColumns=@JoinColumn(name="DEVICE_UID")
			)
//	private Collection<CaptureDevice> originalDevices = CollectionFactory.createCollection();	
	@Index(name="IX_PERSON_ORIG_DEVICES")
	private List<CaptureDevice> originalDevices = new ArrayList<CaptureDevice>();

	@ManyToMany(targetEntity=com.inodes.hrdata.entities.organization.Node.class, cascade={CascadeType.REFRESH, CascadeType.MERGE}) 
	@ForeignKey(name="FK_PERSON_NODE")
	@JoinTable(
			name="PERSON_NODE",
			joinColumns=@JoinColumn(name="PERSON_UID"),
			inverseJoinColumns=@JoinColumn(name="NODE_UID")
			)
	@Index(name="IX_PERSON_NODES")
	private List<Node> allowedNodes = new ArrayList<Node>();

	/**
	 * Unique ID
	 */
	@Id @GeneratedValue(generator="system-uuid") 
	@Column(name="PERSON_UID", length=32)
	@GenericGenerator(name="system-uuid", strategy = "uuid")
	private String uid;

	/**
	 * Fingerprint templates
	 */
	@OneToMany(mappedBy="person", orphanRemoval=true, cascade={CascadeType.ALL})
	@Index(name="IX_PERSON_FINGER_TEMPLATE")
	private List<FingerTemplate> fingerTemplates = new ArrayList<FingerTemplate>();

	
	/**
	 * Facial templates
	 */
	@OneToMany(mappedBy="person", orphanRemoval=true, cascade={CascadeType.ALL})
	@Index(name="IX_PERSON_FACE_TEMPLATE")
	private List<FaceTemplate> faceTemplates = new ArrayList<FaceTemplate>();
	
	
	/**
	 * Cards assigned
	 */
	@OneToMany(mappedBy="person", cascade={CascadeType.ALL})
	@Index(name="IX_PERSON_CARD_ASSIGNATION")
	private List<CardAssignation> cards = new ArrayList<CardAssignation>();

	@Formula("(select max(a.card_number) from card a, card_person b where a.card_uid = b.card_uid and b.person_uid = person_uid and (b.effective_date = (select max(c.effective_date) from card_person c where c.person_uid = person_uid) and b.expiration_date > {fn NOW()} or b.expiration_date is null))")
	private String lastAssignedCard;

	/**
	 * Available TimeZones
	 */
	@ManyToMany(targetEntity=com.inodes.hrdata.entities.TimeZone.class, cascade={CascadeType.REFRESH, CascadeType.MERGE}) 
	@ForeignKey(name="FK_PERSON_TIMEZONE", inverseName="FK_TIMEZONE_PERSON")
	@JoinTable(
			name="PERSON_TIMEZONE",
			joinColumns=@JoinColumn(name="PERSON_UID"),
			inverseJoinColumns=@JoinColumn(name="TIMEZONE_UID")
			)
	private List<TimeZone> timezones = new ArrayList<TimeZone>();
	
	/**
	 * Available TimeZones
	 */
	@ManyToMany(targetEntity=com.inodes.hrdata.entities.TimeZone.class, cascade={CascadeType.REFRESH, CascadeType.MERGE}) 
	@ForeignKey(name="FK_ORIGINAL_PERSON_TIMEZONE", inverseName="FK_ORIGINAL_TIMEZONE_PERSON")
	@JoinTable(
			name="ORIGINAL_PERSON_TIMEZONE",
			joinColumns=@JoinColumn(name="PERSON_UID"),
			inverseJoinColumns=@JoinColumn(name="TIMEZONE_UID")
			)
	private List<TimeZone> originalTimezones = new ArrayList<TimeZone>();	

	/**
	 * Birth Date
	 */
	@Temporal(TemporalType.DATE)
	@Column(name = "BIRTHDATE", length = 0)
	private Date birthDate;

	/**
	 * Assets
	 */
	@OneToMany(mappedBy="person", cascade={CascadeType.ALL})
	private List<Asset> assets = new ArrayList<Asset>();

	/**
	 * Vehicles
	 */
	@OneToMany(mappedBy="person", cascade={CascadeType.ALL})
	private List<Vehicle> vehicles = new ArrayList<Vehicle>();

	/**
	 * Available Menues
	 */
	@OneToMany(mappedBy="person", orphanRemoval=true, cascade={CascadeType.ALL})
	private List<PersonMenu> personMenues = new ArrayList<PersonMenu>();

	public final static String PERSON_TYPE_EMPLOYEE = "E"; 
	public final static String PERSON_TYPE_GUEST = "G"; 

	/**
	 * Generic Constructor
	 */
	public Person(){
	}

	/**
	 * @return the contactData
	 */
	public Contact getContactData() {
		return contactData;
	}

	/**
	 * @param contactData the contactData to set
	 */
	public void setContactData(Contact contactData) {
		this.contactData = contactData;
	}
	
	/**
	 * @return the personSchData
	 */
	public SchedulePerson getSchedulePersonData() {
		return personSchData;
	}

	/**
	 * @param personSchData the personSchData to set
	 */
	public void setSchedulePersonData(SchedulePerson schPerson) {
		this.personSchData = schPerson;
	}

	/**
	 * @return the documentNumber
	 */
	public String getDocumentNumber() {
		return documentNumber;
	}

	/**
	 * @param documentNumber the documentNumber to set
	 */
	public void setDocumentNumber(String documentNumber) {
		this.documentNumber = documentNumber;
	}

	/**
	 * @return the documentType
	 */
	public DocumentType getDocumentType() {
		return documentType;
	}

	/**
	 * @param documentType the documentType to set
	 */
	public void setDocumentType(DocumentType documentType) {
		this.documentType = documentType;
	}

	/**
	 * @return the firstName
	 */
	public String getFirstName() {
		return firstName;
	}

	/**
	 * @param firstName the firstName to set
	 */
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	/**
	 * @return the lastName
	 */
	public String getLastName() {
		return lastName;
	}

	/**
	 * @param lastName the lastName to set
	 */
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	/**
	 * @return the routes
	 */
	public List<Route> getRoutes() {
		return routes;
	}	
	
	/**
	 * @param routes the routes to set
	 */
	public void setRoutes(List<Route> routes) {
		this.routes = routes;
	}

	/**
	 * Adds a route to this person
	 * @param route
	 */
	public void addRoute(Route route) {
		if(!routes.contains(route)) {
			routes.add(route);
		}
	}

	/**
	 * Adds a capture device to this person
	 * @param capture device
	 */
	public void addDevice(CaptureDevice cd) {
		if(!devices.contains(cd)) {
			devices.add(cd);
		}
	}

	public void addRoutes(Collection<Route> routes) {
		this.routes.addAll(routes);
	}

	/**
	 * Removes a route from this person
	 * @param route
	 */
	public void removeRoute(Route route) {
		routes.remove(route);
	}

	public List<CaptureDevice> getDevices() {
		return devices;
	}

	public void setDevices(List<CaptureDevice> devices) {
		this.devices = devices;
	}

	public void addDevices(Collection<CaptureDevice> devices) {
		this.devices.addAll(devices);
	}

	public List<Node> getNodes() {
		return allowedNodes;
	}

	public void setNodes(List<Node> allowedNodes) {
		this.allowedNodes = allowedNodes;
	}

	public void addPersonMenues(Collection<PersonMenu> menues) {
		this.personMenues.clear();
		this.personMenues.addAll(menues);
	}

	public void removePersonMenu(PersonMenu personMenu) {
		this.personMenues.remove(personMenu);
	}

	/**
	 * This method deletes all the menus assigned to the person
	 */
	public void removeAllPersonMenus() {
		if(personMenues != null && personMenues.size() > 0) {
			personMenues.clear();
		}
	}

	public void removePersonMenu(Menu menu) {		
		Iterator<PersonMenu> ite = this.personMenues.iterator();
		while(ite.hasNext()) {
			PersonMenu pm = ite.next(); 
			if(pm.getMenu().equals(menu)){
				ite.remove();
				break;
			}
		}
	}

	/**
	 * @return the uid
	 */
	public String getUid() {
		return uid;
	}

	/**
	 * @param uid the uid to set
	 */
	public void setUid(String uid) {
		this.uid = uid;
	}

	/**
	 * Adds a template to the valid finger templates collection
	 * @param f
	 */
	public void addTemplate(FingerTemplate f) {
		if(!fingerTemplates.contains(f)) {
			fingerTemplates.add(f);
			f.setPerson(this);
		}
	}

	/**
	 * Removes a template from the valid finger templates collection
	 * @param f
	 */
	public void removeTemplate(FingerTemplate f) {
		fingerTemplates.remove(f);
	}

	/**
	 * @return the fingerTemplates
	 */
	public List<FingerTemplate> getFingerTemplates() {
		return fingerTemplates;
	}

	/**
	 * @param fingerTemplates the fingerTemplates to set
	 */
	public void setFingerTemplates(List<FingerTemplate> fingerTemplates) {
		this.fingerTemplates = fingerTemplates;
	}

	/**
	 * @return the cards
	 */
	public Collection<CardAssignation> getCards() {
		return cards;
	}

	/**
	 * @param cards the cards to set
	 */
	//	public void setCards(Collection<CardAssignation> cards) {
	//		this.cards = cards;
	//	}

	/**
	 * Adds a card assignation to the user
	 * @param cardAssignation
	 */
	public void addCard(CardAssignation cardAssignation) {
		if(!cards.contains(cardAssignation)) {
			cards.add(cardAssignation);
		}
	}

	/**
	 * Removes a card assignation from the user
	 * @param cardAssignation
	 */
	public void removeCards(CardAssignation cardAssignation) {
		cards.remove(cardAssignation);
	}

	/**
	 * @return the timezones
	 */
	public List<TimeZone> getTimezones() {
		return timezones;
	}

	/**
	 * @param timezones the timezones to set
	 */
	public void setTimezones(List<TimeZone> timezones) {
		this.timezones = timezones;
	}

	/**
	 * Adds a time zone to the current timezones list
	 * @param tz
	 */
	public void addTimeZone(TimeZone tz) {
		if(!timezones.contains(tz)) {
			timezones.add(tz);
		}
	}

	/**
	 * Removes a timezone from the current timezones list
	 * @param tz
	 */
	public void removeTimeZone(TimeZone tz) {
		timezones.remove(tz);
	}

	/**
	 * This method deletes all the assets assigned to the person
	 */
	public void removeAllTimeZones() {
		if(timezones != null && timezones.size() > 0) {
			timezones.clear();
		}
	}	

	public Collection<CaptureDevice> getOriginalDevices() {
		return originalDevices;
	}

	public void setOriginalDevices(List<CaptureDevice> originalDevices) {
		this.originalDevices = originalDevices;
	}
	
	
	public Collection<Route> getOriginalRoutes() {
		return originalRoutes;
	}

	public void setOriginalRoutes(List<Route> originalRoutes) {
		this.originalRoutes = originalRoutes;
	}
	
	public Collection<TimeZone> getOriginalTimezones() {
		return originalTimezones;
	}

	public void setOriginalTimezones(List<TimeZone> originalTimezones) {
		this.originalTimezones = originalTimezones;
	}

	/**
	 * @return the birthDate
	 */
	public Date getBirthDate() {
		return birthDate;
	}


	/**
	 * @return the photo
	 */
	public Photo getPhoto() {
		return photo;
	}

	/**
	 * @param photo the photo to set
	 */
	public void setPhoto(Photo photo) {
		this.photo = photo;
	}

	/**
	 * @param birthDate the birthDate to set
	 */
	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}

	/**
	 * @return the clockUserId
	 */
	public String getClockUserId() {
		return clockUserId;
	}

	/**
	 * @return the clockPassword
	 */
	public String getClockPassword() {
		return clockPassword;
	}

	/**
	 * @param clockPassword the clockPassword to set
	 */
	public void setClockPassword(String clockPassword) {
		this.clockPassword = clockPassword;
	}

	/**
	 * @return the clockAdmin
	 */
	public boolean isClockAdmin() {
		return clockAdmin;
	}

	/**
	 * @param clockAdmin the clockAdmin to set
	 */
	public void setClockAdmin(boolean clockAdmin) {
		this.clockAdmin = clockAdmin;
	}

	/**
	 * @param clockUserId the clockUserId to set
	 */
	public void setClockUserId(String clockId) {
		this.clockUserId = clockId;
	}
	

	public String getOldClockUserId() {
		return oldClockUserId;
	}

	public void setOldClockUserId(String oldClockUserId) {
		this.oldClockUserId = oldClockUserId;
	}

	/**
	 * @return the gender
	 */
	public String getGender() {
		return gender;
	}

	/**
	 * @param gender the gender to set
	 */
	public void setGender(String gender) {
		this.gender = gender;
	}

	/**
	 * @return the menues from the collection of PersonMenu
	 */
	public Collection<Menu> getMenues() {
		Collection<Menu> menues = CollectionFactory.createCollection();
		if(null != personMenues) {
			for (PersonMenu personMenu : personMenues) {			
				menues.add(personMenu.getMenu());
			}
		}		
		return menues;
	}

	/**
	 * @return the menues
	 */
	public Collection<PersonMenu> getPersonMenues() {
		return personMenues;
	}

	/**
	 * @param menues the menues to set
	 */
	public void setPersonMenues(List<PersonMenu> menues) {
		this.personMenues = menues;
	}

	public void addMenu(Menu menu, boolean isAdmin) {
		if(!this.getMenues().contains(menu)) {
			PersonMenu personMenu = new PersonMenu();
			personMenu.setMenu(menu);
			personMenu.setPerson(this);
			personMenu.setAdmin(isAdmin);
			this.addPersonMenu(personMenu);
		}
	}

	public void removeMenu(Menu menu) {
		Collection<PersonMenu> tmp = new Vector<PersonMenu>();
		tmp.addAll(personMenues);
		for( PersonMenu pm : tmp ) {
			if( pm.getMenu().equals(menu)) {
				personMenues.remove(pm);
				pm.setPerson(null);
			}
		}
	}

	/**
	 * Adds a menu to this person
	 * @param menu
	 */
	public void addMenu(Menu menu) {
		addMenu(menu, false);
	}

	public void addPersonMenu(PersonMenu pmenu) {
		if(!personMenues.contains(pmenu)) {
			personMenues.add(pmenu);
		}
	}


	/**
	 * Tells if this person is allowed to perform operations.
	 * 
	 * @return true for allowed, false for disallowed
	 */
	public abstract boolean isAllowed ();

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result
				+ ((birthDate == null) ? 0 : birthDate.hashCode());
		result = prime * result + (clockAdmin ? 1231 : 1237);
		result = prime * result
				+ ((clockPassword == null) ? 0 : clockPassword.hashCode());
		result = prime * result
				+ ((clockUserId == null) ? 0 : clockUserId.hashCode());
		result = prime * result
				+ ((documentNumber == null) ? 0 : documentNumber.hashCode());
		result = prime * result
				+ ((documentType == null) ? 0 : documentType.hashCode());
		result = prime * result
				+ ((firstName == null) ? 0 : firstName.hashCode());
		result = prime * result + ((gender == null) ? 0 : gender.hashCode());
		result = prime * result
				+ ((lastName == null) ? 0 : lastName.hashCode());
		result = prime * result + ((uid == null) ? 0 : uid.hashCode());
		return result;
	}

	public int getUpdateHashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((clockUserId == null) ? 0 : clockUserId.hashCode());
		result = prime * result
				+ ((clockPassword == null) ? 0 : clockPassword.hashCode());
		result = prime * result
				+ ((firstName == null) ? 0 : firstName.hashCode());
		result = prime * result
				+ ((lastName == null) ? 0 : lastName.hashCode());
		result = prime * result
				+ ((clockAdmin) ? 0 : 1);

		if(fingerTemplates != null)
			for( FingerTemplate ft : fingerTemplates )
				result = result + (prime * ft.hashCode());
		
		if(faceTemplates != null)
			for( FaceTemplate ft : faceTemplates )
				result = result + (prime * ft.hashCode());

		if(getActiveCards() != null)
			for( CardAssignation ca : getActiveCards() )
				result = result + (prime * ca.hashCode());

		if(getDevices() != null)
			for( CaptureDevice d : getDevices() ) 
				result =  result +  (prime * d.hashCode());
		
		if(timezones != null)
			for( TimeZone tz : timezones ) 
				result =  result +  (prime * tz.hashCode());
		
		return result;
	}
	
	
	public int getUpdateHashCodeExcludingDevices() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((clockUserId == null) ? 0 : clockUserId.hashCode());
		result = prime * result
				+ ((clockPassword == null) ? 0 : clockPassword.hashCode());
		result = prime * result
				+ ((firstName == null) ? 0 : firstName.hashCode());
		result = prime * result
				+ ((lastName == null) ? 0 : lastName.hashCode());
		result = prime * result
				+ ((clockAdmin) ? 0 : 1);

		if(fingerTemplates != null)
			for( FingerTemplate ft : fingerTemplates )
				result = result + (prime * ft.hashCode());
		
		if(faceTemplates != null)
			for( FaceTemplate ft : faceTemplates )
				result = result + (prime * ft.hashCode());

		if(getActiveCards() != null)
			for( CardAssignation ca : getActiveCards() )
				result = result + (prime * ca.hashCode());

		if(timezones != null)
			for( TimeZone tz : timezones ) 
				result =  result +  (prime * tz.hashCode());
		
		return result;
	}	

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (birthDate == null) {
			if (other.birthDate != null)
				return false;
		} else if (!birthDate.equals(other.birthDate))
			return false;
		if (clockAdmin != other.clockAdmin)
			return false;
		if (clockPassword == null) {
			if (other.clockPassword != null)
				return false;
		} else if (!clockPassword.equals(other.clockPassword))
			return false;
		if (documentNumber == null) {
			if (other.documentNumber != null)
				return false;
		} else if (!documentNumber.equals(other.documentNumber))
			return false;
		if (documentType == null) {
			if (other.documentType != null)
				return false;
		} else if (!documentType.equals(other.documentType))
			return false;
		if (firstName == null) {
			if (other.firstName != null)
				return false;
		} else if (!firstName.equals(other.firstName))
			return false;
		if (gender == null) {
			if (other.gender != null)
				return false;
		} else if (!gender.equals(other.gender))
			return false;
		if (lastName == null) {
			if (other.lastName != null)
				return false;
		} else if (!lastName.equals(other.lastName))
			return false;
		if (uid == null) {
			if (other.uid != null)
				return false;
		} else if (!uid.equals(other.uid))
			return false;
		return true;
	}

	/**
	 * @See {@link Object#toString()}
	 */
	public String toString() {
		StringBuffer sb = new StringBuffer();
		if( getLastName() != null) {
			sb.append(getLastName());
			sb.append(" ");
		}
		if( getFirstName() != null ) {
			sb.append(getFirstName());
		}
		return sb.toString();
	}

	/**
	 * Returns an Array List with all the Active cards. <br>
	 * To be enabled, a card must have a null expiration date, or a past 
	 * expiration date, or it must be marked as active
	 * @return
	 */
	public Collection<CardAssignation> getActiveCards() {
		Collection<CardAssignation> cards = new ArrayList<CardAssignation>();
		Iterator<CardAssignation> i = getCards().iterator();
		while(i.hasNext()) {
			CardAssignation obj = i.next();
			if(obj.isActive()) cards.add(obj);
		}
		return cards;
	}
	
	public Collection<CardAssignation> getActiveCardsWithFuture() {
		Collection<CardAssignation> cards = new ArrayList<CardAssignation>();
		Iterator<CardAssignation> i = getCards().iterator();
		while(i.hasNext()) {
			CardAssignation obj = i.next();
			if(obj.isActiveWithFuture()) cards.add(obj);
		}
		return cards;
	}
	
		
	//Devuelve coleccion de tarjetas a futuro del mismo tipo que c
	public Collection<CardAssignation> getFutureCards(CardAssignation c) {
		Collection<CardAssignation> cards = new ArrayList<CardAssignation>();
		Iterator<CardAssignation> i = getActiveCardsWithFuture().iterator();
		while(i.hasNext()) {
			CardAssignation obj = i.next();
			if (obj.getCard().getType().equals(c.getCard().getType())){
				if (obj.getEffectiveDate().after(new Date())){
					cards.add(obj);
				}
			}
			}
		return cards;
	}

	/**
	 * Returns an Array List with all the Not Active (Expired) cards. <br>
	 * To be expired, a card must have a not null and past expiration date, 
	 * or it must be marked as inactive
	 * @return
	 */
	public Collection<CardAssignation> getExpiredCards() {
		Collection<CardAssignation> cards = new ArrayList<CardAssignation>();
		Iterator<CardAssignation> i = getCards().iterator();
		while(i.hasNext()) {
			CardAssignation obj = i.next();
			if(!obj.isActive()) cards.add(obj);
		}
		return cards;
	}

	public Collection<CardAssignation> getArchiveCardsTable() {
		Collection<CardAssignation> cards = new ArrayList<CardAssignation>();
		Iterator<CardAssignation> i = getCards().iterator();
		while(i.hasNext()) {
			CardAssignation obj = i.next();
			if(!obj.isActive() || obj.getEffectiveDate().after(new Date())){
				cards.add(obj);
			}
				
		}
		return cards;
	}
	/**
	 * Returns a list with all the current assigned card numbers
	 * @return
	 */
	public String getLastAssignedCard() {
		return lastAssignedCard;
	}

	/**
	 * Returns a list with all the available capture devices for this user
	 * @return
	 */
	public Collection<CaptureDevice> getAvailableDevices() {
		Collection<CaptureDevice> availableDevices = CollectionFactory.createSet();
		if (null != devices) {
			for (CaptureDevice device : devices) {
				if( device.getStatus() == Status.ACTIVE) {
					availableDevices.add(device);
				}
			}
		}
		return availableDevices;
	}

	public Collection<Asset> getAssets() {
		return assets;
	}

	public void setAssets(List<Asset> assets) {
		this.assets = assets;
	}

	public Collection<Vehicle> getVehicles() {
		return vehicles;
	}

	public void setVehicles(List<Vehicle> vehicles) {
		this.vehicles = vehicles;
	}

	public void addAsset(Asset asset) {
		if(!assets.contains(asset)) {
			assets.add(asset);
			asset.setPerson(this);
		}
	}

	public void addVehicle(Vehicle vehicle) {
		if(!vehicles.contains(vehicle)) {
			vehicles.add(vehicle);
			vehicle.setPerson(this);
		}
	}

	public void removeAsset(Asset asset) {
		if(asset != null) {
			asset.setPerson(null);
		}
		assets.remove(asset);
	}

	public void removeVehicle(Vehicle vehicle) {
		if(vehicle != null ) {
			vehicle.setPerson(null);
		}
		vehicles.remove(vehicle);
	}

	/**
	 * Retrieves the full person name
	 * @return
	 */
	public String getFullName() {
		StringBuffer sb = new StringBuffer();
		boolean hasOne = false;

		if( lastName != null && !lastName.equals("")) {
			sb.append(lastName);
			hasOne = true;
		}

		if( firstName != null && !firstName.equals("")) {
			if( hasOne ) sb.append(", ");
			sb.append(firstName);
		}

		return sb.toString();
	}

	/**
	 * Returns implementation the person type
	 */
	public abstract String getPersonType();

	/**
	 * Removes a fingerprint Template
	 * @param fingerIdx
	 */
	public void removeFingerTemplate(int fingerIdx) {
		Vector<FingerTemplate> v = new Vector<FingerTemplate>(this.getFingerTemplates());
		for( int i = 0; i < v.size(); i++ ) {
			FingerTemplate t = v.get(i);
			if( t.getIndex() == fingerIdx ) {
				this.getFingerTemplates().remove(t);
			}
		}
	}
	
	
	public void removeFaceTemplate(int faceIdx) {
		Vector<FaceTemplate> v = new Vector<FaceTemplate>(this.getFaceTemplates());
		for( int i = 0; i < v.size(); i++ ) {
			FaceTemplate t = v.get(i);
			if( t.getIndex() == faceIdx ) {
				this.getFaceTemplates().remove(t);
			}
		}
	}
	
	public List<FaceTemplate> getFaceTemplates() {
		return faceTemplates;
	}	
	
	public void addFaceTemplate(int fingerIdx, String template) {
		removeFaceTemplate(fingerIdx);
		FaceTemplate t = new FaceTemplate();
		t.setIndex(fingerIdx);
		t.setTemplate(template);
		t.setPerson(this);
		this.getFaceTemplates().add(t);
	}	
	
	
	public boolean hasFaceTemplate() {
//		Vector<FaceTemplate> v = new Vector<FaceTemplate>(this.getFaceTemplates());
//		for( int i = 0; i < v.size(); i++ ) {
//			FaceTemplate t = v.get(i);
//			if( t.getIndex() == fingerIdx ) {
//				return true;
//			}
//		}
		
		if(this.getFaceTemplates()!=null && this.getFaceTemplates().size() >= 1){
			return true;
		}

		return false;
	}	
	
	/**
	 * Removes all finger templates
	 */
	public void removeAllFaceTemplates() {
		Vector<FaceTemplate> v = new Vector<FaceTemplate>(this.getFaceTemplates());
		for( int i = 0; i < v.size(); i++ ) {
			FaceTemplate t = v.get(i);
			this.getFaceTemplates().remove(t);
		}
	}	

	/**
	 * Removes all finger templates
	 */
	public void removeAllFingerTemplates() {
		Vector<FingerTemplate> v = new Vector<FingerTemplate>(this.getFingerTemplates());
		for( int i = 0; i < v.size(); i++ ) {
			FingerTemplate t = v.get(i);
			this.getFingerTemplates().remove(t);
		}
	}

	public void clearPersonMenus() {
		for( PersonMenu pm : personMenues ) {
			pm.setPerson(null);
		}
		personMenues.clear();
	}

	/**
	 * Checks if this person has a finger template according to the finger index passed
	 * @param fingerIdx
	 * @return
	 */
	public boolean hasFingerTemplate(int fingerIdx) {
		Vector<FingerTemplate> v = new Vector<FingerTemplate>(this.getFingerTemplates());
		for( int i = 0; i < v.size(); i++ ) {
			FingerTemplate t = v.get(i);
			if( t.getIndex() == fingerIdx ) {
				return true;
			}
		}

		return false;
	}

	/**
	 * Adds a finger print template
	 * @param fingerIdx
	 * @param template
	 */
	public void addFingerTemplate(int fingerIdx, String template) {
		removeFingerTemplate(fingerIdx);
		FingerTemplate t = new FingerTemplate();
		t.setIndex(fingerIdx);
		t.setTemplate(template);
		t.setPerson(this);
		this.getFingerTemplates().add(t);
	}

	public boolean isBasicallySameAs(Employee obj) {
		
		if (this == obj)
			return true;
		
		if (getClass() != obj.getClass())
			return false;
		
		Person other = (Person) obj;
		if (birthDate == null) {
			if (other.birthDate != null)
				return false;
		} else if (!birthDate.equals(other.birthDate))
			return false;
		if (clockAdmin != other.clockAdmin)
			return false;
		if (clockPassword == null) {
			if (other.clockPassword != null)
				return false;
		} else if (!clockPassword.equals(other.clockPassword))
			return false;
		if (documentNumber == null) {
			if (other.documentNumber != null)
				return false;
		} else if (!documentNumber.equals(other.documentNumber))
			return false;
		if (documentType == null) {
			if (other.documentType != null)
				return false;
		} else if (!documentType.equals(other.documentType))
			return false;
		if (firstName == null) {
			if (other.firstName != null)
				return false;
		} else if (!firstName.equals(other.firstName))
			return false;
		if (gender == null) {
			if (other.gender != null)
				return false;
		} else if (!gender.equals(other.gender))
			return false;
		if (lastName == null) {
			if (other.lastName != null)
				return false;
		} else if (!lastName.equals(other.lastName))
			return false;
		if (uid == null) {
			if (other.uid != null)
				return false;
		} else if (!uid.equals(other.uid))
			return false;
		return true;
	}
}




Martin. No logro resolverlo. Has podido mirar algo?

Hola Mariana.

Dado que el error ocurre en el método convertPrimitiveType() de MethodProperty, probaría en cambiar todos los atributos primitivos a sus clases correspondientes (ejemplo private int status = 1; a (ejemplo private Integer status = 1;) ). Es lo único que se me ocurre.

La otra opción sería poner un punto de interrupción en la linea 553 de com.vaadin.data.util.MethodPropertyjusto antes que ocurra la excepción y intentar discernir porque type llega en nulo …

Saludos.

Sigo sin poder…

Sigo sin poder…