NPE happen if show dialog at time not yet complete login

Description

1. let password expired to go change password screen
(or modify code of LoginPanel to always run: wndLogin.changePassword(userId, userPassword, chkSelectRole.isChecked(), clientsKNPairs)

2. change password and ok

=> NPE message

reasone: https://idempiere.atlassian.net/browse/IDEMPIERE-3518#icft=IDEMPIERE-3518 add logic to get client info each time show dialog.
but when not yet complete login don't have this info

method AdempiereWebUI.getAppDeskop return null on this case.

java.lang.NullPointerException at org.adempiere.webui.ClientInfo.get(ClientInfo.java:106) at org.adempiere.webui.ClientInfo.maxWidth(ClientInfo.java:124) at org.adempiere.webui.component.Messagebox.init(Messagebox.java:168) at org.adempiere.webui.component.Messagebox.show(Messagebox.java:239) at org.adempiere.webui.component.Messagebox.showDialog(Messagebox.java:316) at org.adempiere.webui.component.Messagebox.showDialog(Messagebox.java:309) at org.adempiere.webui.panel.ChangePasswordPanel.validateChangePassword(ChangePasswordPanel.java:355) at org.adempiere.webui.panel.ChangePasswordPanel.onEvent(ChangePasswordPanel.java:268) at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:3161) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3131) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3073) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138) at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1853) at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1625) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1328) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:606) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:482) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:490) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:833) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:561) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:334) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:104) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:243) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:679) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597) at java.lang.Thread.run(Thread.java:748)

Environment

None

Attachments

1
  • 10 Nov 2017, 10:40 AM

Activity

Show:

Hiep Lq November 10, 2017 at 10:41 AM

that time it's ok to use standard messagebox

Fixed

Details

Assignee

Reporter

Labels

Fix versions

Priority

Created November 2, 2017 at 8:09 PM
Updated January 1, 2018 at 12:12 PM
Resolved November 16, 2017 at 2:21 AM